Le funzioni ravel () e flatten () di numpy sono due tecniche che vorrei provare qui. Vorrei aggiungere ai post pubblicati da Joe , Siraj , bubble e Kevad .
Ravel:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
Appiattire:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
è più veloce , poiché è una funzione a livello di libreria che non esegue alcuna copia dell'array. Tuttavia, qualsiasi modifica dell'array A si riporterà sull'array M originale se si sta utilizzandonumpy.ravel()
.
numpy.flatten()
è più lento dinumpy.ravel()
. Ma se si utilizza numpy.flatten()
per creare A, le modifiche in A non verranno trasferite nell'array M originale .
numpy.squeeze()
e M.reshape(-1)
sono più lenti di numpy.flatten()
e 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