Die Funktionen ravel () und flatten () von numpy sind zwei Techniken, die ich hier ausprobieren würde. Ich möchte die Beiträge von Joe , Siraj , Bubble und Kevad ergänzen .
Ravel:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
Ebnen:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
ist schneller , da es sich um eine Funktion auf Bibliotheksebene handelt, die keine Kopie des Arrays erstellt. Jedoch wird jede Änderung in Array A sich auf die ursprüngliche Anordnung M tragen über , wenn Sie verwendennumpy.ravel()
.
numpy.flatten()
ist langsamer alsnumpy.ravel()
. Wenn Sie jedoch numpy.flatten()
A erstellen, werden Änderungen in A nicht auf das ursprüngliche Array M übertragen .
numpy.squeeze()
und M.reshape(-1)
sind langsamer als numpy.flatten()
und 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