ravel () et aplatir () fonctions de numpy sont deux techniques que je voudrais essayer ici. Je voudrais ajouter aux messages de Joe , Siraj , Bubble et Kevad .
Effilochage:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
Aplatir:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
est plus rapide , car il s'agit d'une fonction de niveau bibliothèque qui ne fait aucune copie du tableau. Cependant, tout changement dans le tableau A sera reporté sur le tableau d'origine M si vous utiliseznumpy.ravel()
.
numpy.flatten()
est plus lent que numpy.ravel()
. Mais si vous utilisez numpy.flatten()
pour créer A, des changements dans A ne sera pas reporté sur le M tableau original .
numpy.squeeze()
et M.reshape(-1)
sont plus lents que numpy.flatten()
et numpy.ravel()
.
%timeit M.ravel()
>>> 1000000 loops, best of 3: 309 ns per loop
%timeit M.flatten()
>>> 1000000 loops, best of 3: 650 ns per loop
%timeit M.reshape(-1)
>>> 1000000 loops, best of 3: 755 ns per loop
%timeit np.squeeze(M)
>>> 1000000 loops, best of 3: 886 ns per loop