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



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

460   3  

3 ответов:

использовать 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, вместо этого вы можете вызвать list() в своем массиве, и вы получите список numpy скаляры. (Спасибо Mr_and_Mrs_D за указание на это в комментарии.)

numpy .метод 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`

tolist() отлично работает, даже если встречается вложенный массив, скажем, панды DataFrame;

my_list = [0,1,2,3,4,5,4,3,2,1,0]
my_dt = pd.DataFrame(my_list)
new_list = [i[0] for i in my_dt.values.tolist()]

print(type(my_list),type(my_dt),type(new_list))

Comments

    Ничего не найдено.