web-dev-qa-db-fra.com

Python: concaténer (ou cloner) un tableau numpy N fois

Je veux créer un tableau numpy MxN en clonant un Ndarray Mx1 N fois. Existe-t-il un moyen Pythonic efficace de le faire au lieu de boucler?

Btw la manière suivante ne fonctionne pas pour moi (X est mon tableau Mx1):

   numpy.concatenate((X, numpy.tile(X,N)))

car il a créé un tableau [M * ​​N, 1] au lieu de [M, N]

30
stelios

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]])
11
atomh33ls

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

impressions:

[[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
Samy Arous