Como converter uma matriz NumPy em uma lista Python (por exemplo [[1,2,3],[4,5,6]]
) e fazê-lo razoavelmente rápido?
298
Use tolist()
:
import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]
Observe que isso converte os valores de qualquer tipo numpy que eles possam ter (por exemplo, np.int32 ou np.float32) no "tipo Python compatível mais próximo" (em uma lista). Se você deseja preservar os tipos de dados numpy, pode chamar list () em sua matriz e você terminará com uma lista de escalares numpy . (Obrigado a Mr_and_Mrs_D por apontar isso em um comentário.)
tolist
, ela será convertida emfloats
s - isso provavelmente não é desejado. O usolist(myarray)
não sofre com isso - por que devemos preferirtolist
?myarray.astype(np.int32).tolist()
seria uma opção e explícita sobre o que você está tentando realizar. (E, por último,list(array_of_type_float32)
não dá inteiros aqui quando eu tentei ... então eu não sei o que você está pedindo.)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']]
O método numpy .tolist produz listas aninhadas se a forma da matriz numpy for 2D.
se desejar listas planas, o método abaixo funciona.
fonte
tolist()
funciona bem mesmo se encontrar uma matriz aninhada, digamos um pandaDataFrame
;fonte
someList = [list(map(int, input().split())) for i in range(N)]
fonte
c = matriz np ([[1,2,3], [4,5,6]])
fonte