Las funciones ravel () y flatten () de numpy son dos técnicas que probaría aquí. Me gustaría agregar a las publicaciones hechas por Joe , Siraj , bubble y Kevad .
Enmarañar:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
Aplanar:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
es más rápido , ya que es una función de nivel de biblioteca que no realiza ninguna copia de la matriz. Sin embargo, cualquier cambio en la matriz A se transferirá a la matriz original M si está utilizandonumpy.ravel()
.
numpy.flatten()
es más lento quenumpy.ravel()
. Pero si usted está utilizando numpy.flatten()
para crear A, entonces los cambios en A no dejarse llevar a la matriz original M .
numpy.squeeze()
y M.reshape(-1)
son más lentos que numpy.flatten()
y 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