Как преобразовать массив NumPy в список Python (например, [[1,2,3],[4,5,6]]
) и сделать это достаточно быстро?
Преобразование массива NumPy в структуру списка Python?
Ответ 1
Используйте tolist()
:
import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]
Обратите внимание, что это преобразует значения из любого типа numpy, который у них может быть (например, np.int32 или np.float32), в "ближайший совместимый тип Python" (в списке). Если вы хотите сохранить типы данных numpy, вы можете вместо этого вызвать список() в своем массиве, и в итоге вы получите список numpy scalars. (Спасибо Mr_and_Mrs_D за указание этого в комментарии.)
Ответ 2
В массивах NumPy есть метод списка:
In [1]: arr=np.array([[1,2,3],[4,5,6]])
In [2]: arr.tolist()
Out[2]: [[1, 2, 3], [4, 5, 6]]
Ответ 3
Метод numty.tolist создает вложенные массивы, если форма массива numpy равна 2D.
если требуются плоские списки, используется нижеописанный метод.
import numpy as np
from itertools import chain
a = [1,2,3,4,5,6,7,8,9]
print type(a), len(a), a
npa = np.asarray(a)
print type(npa), npa.shape, "\n", npa
npa = npa.reshape((3, 3))
print type(npa), npa.shape, "\n", npa
a = list(chain.from_iterable(npa))
print type(a), len(a), a`