Làm cách nào để chuyển đổi một mảng NumPy thành Danh sách Python (ví dụ [[1,2,3],[4,5,6]]
) và thực hiện nhanh chóng một cách hợp lý?
Làm cách nào để chuyển đổi một mảng NumPy thành Danh sách Python (ví dụ [[1,2,3],[4,5,6]]
) và thực hiện nhanh chóng một cách hợp lý?
Câu trả lời:
Sử dụng tolist()
:
import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]
Lưu ý rằng điều này chuyển đổi các giá trị từ bất kỳ loại numpy nào mà chúng có thể có (ví dụ: np.int32 hoặc np.float32) thành "loại Python tương thích gần nhất" (trong danh sách). Nếu bạn muốn duy trì các loại dữ liệu numpy, bạn có thể gọi danh sách () trên mảng của mình và bạn sẽ kết thúc với một danh sách các vô hướng numpy . (Cảm ơn Mr_and_Mrs_D đã chỉ ra điều đó trong một bình luận.)
myarray.astype(np.int32).tolist()
sẽ là một lựa chọn và rõ ràng về những gì bạn đang cố gắng thực hiện. (Và cuối cùng, list(array_of_type_float32)
không cung cấp số nguyên ở đây khi tôi thử nó ... vì vậy tôi không biết bạn đang hỏi gì.)
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']]
Phương thức numpy .tolist tạo ra các danh sách lồng nhau nếu hình dạng mảng numpy là 2D.
nếu danh sách phẳng được mong muốn, phương pháp dưới đây hoạt động.
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
sẽ chuyển đổi nó thànhfloats
s - điều đó có thể không mong muốn. Sử dụnglist(myarray)
không phải chịu đựng điều này - tại sao chúng ta nên thíchtolist
?