Как мне преобразовать массив NumPy в список Python (например [[1,2,3],[4,5,6]]
) и сделать это достаточно быстро?
Как мне преобразовать массив NumPy в список Python (например [[1,2,3],[4,5,6]]
) и сделать это достаточно быстро?
Ответы:
Используйте 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» (в списке). Если вы хотите сохранить numy-типы данных, вы можете вместо этого вызвать list () в вашем массиве, и вы получите список numy-скаляров . (Спасибо Mr_and_Mrs_D за указание на это в комментарии.)
myarray.astype(np.int32).tolist()
было бы вариант, и было бы ясно, что вы пытаетесь достичь. (И, наконец, list(array_of_type_float32)
не дает здесь целых чисел, когда я попробовал это ... поэтому я не знаю, о чем вы спрашиваете.)
float32_array = np.array([0.51764709], np.float32); print(float32_array.tolist()); print(list(float32_array))
np.array([[0, 'one'], ['two', 3]]).tolist() -> [['0', 'one'], ['two', '3']]
Метод numpy .tolist создает вложенные списки, если форма numpy массива двумерная.
если желательны плоские списки, метод ниже работает.
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`
someList = [list(map(int, input().split())) for i in range(N)]
c = np.array ([[1,2,3], [4,5,6]])
list(c.flatten())
tolist
преобразует его вfloats
s - вероятно, это нежелательно. Использованиеlist(myarray)
не страдает от этого - почему мы должны предпочитатьtolist
?