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ý?Chuyển mảng NumPy sang cấu trúc Danh sách Python?
156
A
Trả lời
236
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 cứ loại NumPy họ có thể có (ví dụ np.int32 hoặc np.float32) để "loại Python tương thích gần nhất" (trong danh sách) . Nếu bạn muốn bảo toàn các kiểu dữ liệu khó khăn, bạn có thể gọi danh sách() trên mảng của bạn thay vào đó, và bạn sẽ kết thúc với một danh sách numpy scalars. (Nhờ Mr_and_Mrs_D đã chỉ ra rằng trong một chú thích.)
37
mảng NumPy có một tolist method:
In [1]: arr=np.array([[1,2,3],[4,5,6]])
In [2]: arr.tolist()
Out[2]: [[1, 2, 3], [4, 5, 6]]
3
Phương pháp ToList NumPy tạo mảng lồng nhau nếu hình dạng mảng NumPy là 2D.
nếu muốn danh sách phẳng, phương thức bên dưới 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`
Các vấn đề liên quan
- 1. mảng numpy Python vs danh sách
- 2. Chuyển đổi danh sách cây thành cấu trúc phân cấp
- 3. Chuyển mảng Numpy sang OpenCV Array
- 4. Chuyển mảng numpy sang PySide QPixmap
- 5. Chuyển đổi cấu trúc dữ liệu MIDI sang Java (Danh sách, Bản đồ băm, ???)
- 6. Danh sách cấu trúc cây thư mục trong python?
- 7. Di chuyển một dữ liệu danh sách mảng sang một danh sách mảng khác trong C#
- 8. Chuyển đổi cấu trúc Động [] thành danh sách số
- 9. chuyển đổi danh sách phẳng thành danh sách trong python
- 10. Chuyển đổi mảng 2dump thành danh sách các danh sách
- 11. Cách Pythonic để tạo một mảng numpy từ danh sách các mảng có nhiều mảng
- 12. python ctypes mảng của các cấu trúc
- 13. SWIG mảng/python bên trong cấu trúc
- 14. cách chuyển danh sách tệp sang python phương thức open()
- 15. Chuyển đổi danh sách sang từ điển bằng Python
- 16. Python, chuyển danh sách và ghi sang tệp CSV
- 17. Chuyển đổi mảng cấu trúc thành IntPtr
- 18. mảng python hiệu quả để chuyển đổi mảng numpy
- 19. Python:. Mảng v Danh sách
- 20. Chuyển đổi mảng 2D thành mảng có cấu trúc
- 21. Nhiều lát trong danh sách chỉ mục cho NumPy mảng
- 22. Tái cấu trúc Ruby: Chuyển chuỗi mảng thành mảng int
- 23. Dịch matlab sang python/numpy
- 24. Danh sách cấu trúc dữ liệu C# Efficiency
- 25. Chuyển đổi loại Visual Basic 6.0 sang VB.NET 'Cấu trúc'
- 26. Python/NumPy: Chuyển đổi danh sách các bools để unsigned int
- 27. thưa thớt danh sách chuyển nhượng trong python
- 28. python .count cho mảng đa chiều (danh sách danh sách)
- 29. Encode Python danh sách sang UTF-8
- 30. Chuyển đổi một danh sách các chuỗi trong một mảng NumPy một cách nhanh
Nếu danh sách của bạn là float32 'tolist' sẽ chuyển nó thành' phao '- điều đó không được mong muốn. Sử dụng 'list (myarray)' không chịu đựng điều này - tại sao chúng ta nên thích 'tolist' hơn? –
@Mr_and_Mrs_D là bạn đề xuất rằng, mặc dù có nổi trong mảng của bạn, bạn muốn có danh sách kết quả là số nguyên? Đó là một câu hỏi hoàn toàn khác ... và tất nhiên bạn phải xác định rằng mặc dù là giá trị float32, tất cả chúng đều là không thể tách rời. Dù sao, nếu bạn có tình huống đó, tôi đoán làm '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ì.) –
Tôi chưa bao giờ đề cập đến số nguyên - hãy thử 'float32_array = np.array ([0,51764709], np.float32); in (float32_array.tolist()); print (danh sách (float32_array)) ' –