Преобразование массива NumPy в структуру списка Python?

Как преобразовать массив NumPy в список Python (например, [[1,2,3],[4,5,6]]) и сделать это достаточно быстро?

Ответ 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`