Как мне преобразовать массив NumPy в список Python (например [[1,2,3],[4,5,6]]
) и сделать это достаточно быстро?
297
Используйте 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 за указание на это в комментарии.)
tolist
преобразует его вfloats
s - вероятно, это нежелательно. Использованиеlist(myarray)
не страдает от этого - почему мы должны предпочитатьtolist
?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 массива двумерная.
если желательны плоские списки, метод ниже работает.
источник
tolist()
работает нормально, даже если встречается вложенный массив, скажем, пандыDataFrame
;источник
someList = [list(map(int, input().split())) for i in range(N)]
источник
c = np.array ([[1,2,3], [4,5,6]])
источник