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