Como converter uma matriz NumPy em uma lista Python (por exemplo [[1,2,3],[4,5,6]]
) e fazê-lo razoavelmente rápido?
Como converter uma matriz NumPy em uma lista Python (por exemplo [[1,2,3],[4,5,6]]
) e fazê-lo razoavelmente rápido?
Respostas:
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.)
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.
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 = matriz np ([[1,2,3], [4,5,6]])
list(c.flatten())
tolist
, ela será convertida emfloats
s - isso provavelmente não é desejado. O usolist(myarray)
não sofre com isso - por que devemos preferirtolist
?