Функции ravel () и flatten () из numpy - это два метода, которые я бы попробовал здесь. Я хотел бы добавить к сообщениям, сделанным Джо , Сираджем , Бублом и Кевадом .
Равель:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
Свести:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
быстрее , так как это функция уровня библиотеки, которая не делает никакой копии массива. Однако любое изменение в массиве A будет перенесено в исходный массив M, если вы используетеnumpy.ravel()
.
numpy.flatten()
медленнее, чемnumpy.ravel()
. Но если вы используете numpy.flatten()
для создания А, то изменения в не будут перенесены на оригинальный массив M .
numpy.squeeze()
и M.reshape(-1)
медленнее, чем numpy.flatten()
и 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