Funkcje ravel () i flatten () z numpy to dwie techniki, które chciałbym tutaj wypróbować. Będę chciał dodać do słupków wykonanych przez Joe , Siraj , bańki i Kevad .
Strzępy:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
Spłaszczyć:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
jest szybszy , ponieważ jest to funkcja na poziomie biblioteki, która nie tworzy żadnej kopii tablicy. Jednak każda zmiana w tablicy A zostanie przeniesiona do oryginalnej tablicy M, jeśli używasznumpy.ravel()
.
numpy.flatten()
jest wolniejszy niżnumpy.ravel()
. Ale jeśli używasz numpy.flatten()
, aby utworzyć, a następnie zmiany w nie zostaną przeniesione do oryginalnej macierzy M .
numpy.squeeze()
i M.reshape(-1)
są wolniejsze niż numpy.flatten()
i 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