Python: Concaténer (ou clone) un tableau numpy N fois
je veux créer un tableau MXN numpy en clonant un MX1 ndarray N fois. Y a-t-il un moyen pythonique efficace de faire cela au lieu de boucler?
Btw la façon suivante ne fonctionne pas pour moi (X est mon tableau Mx1):
numpy.concatenate((X, numpy.tile(X,N)))
puisqu'il a créé un tableau [M*N,1] au lieu de [M,N]
21
demandé sur
chefarov
2014-03-25 16:13:45
3 réponses
Vous êtes proche, vous souhaitez utiliser np.tile
, mais comme ceci:
a = np.array([0,1,2])
np.tile(a,(3,1))
Résultat:
array([[0, 1, 2],
[0, 1, 2],
[0, 1, 2]])
Si vous appelez np.tile(a,3)
vous obtiendrez concatenate
comportement comme vous avez été voir
array([0, 1, 2, 0, 1, 2, 0, 1, 2])
http://docs.scipy.org/doc/numpy/reference/generated/numpy.tile.html
37
répondu
CoryKramer
2014-03-25 12:22:40
Vous pouvez utiliser vstack:
numpy.vstack([X]*N)
par exemple
>>> import numpy as np
>>> X = np.array([1,2,3,4])
>>> N = 7
>>> np.vstack([X]*N)
array([[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]])
8
répondu
atomh33ls
2014-03-25 13:11:53
Avez-vous essayé ceci:
n = 5
X = numpy.array([1,2,3,4])
Y = numpy.array([X for _ in xrange(n)])
print Y
Y[0][1] = 10
print Y
imprime:
[[1 2 3 4]
[1 2 3 4]
[1 2 3 4]
[1 2 3 4]
[1 2 3 4]]
[[ 1 10 3 4]
[ 1 2 3 4]
[ 1 2 3 4]
[ 1 2 3 4]
[ 1 2 3 4]]
1
répondu
Samy Arous
2014-03-25 12:22:14