Tôi tự hỏi nếu có một cách để làm phẳng mảng đa chiều (tức là, loại ndarray
) dọc theo trục đã cho mà không tạo bản sao trong NumPy. Ví dụ, tôi có một loạt các hình ảnh 2D và tôi muốn san bằng từng hình ảnh một vector. Vì vậy, một cách dễ dàng để làm điều đó là numpy.array([im.flatten() for im in images])
, nhưng điều đó tạo ra các bản sao của mỗi.Làm thế nào để làm phẳng trục của một mảng đa chiều mà không tạo bản sao trong NumPy?
10
A
Trả lời
12
ravel
nó:
>>> a = numpy.arange(25).reshape((5, 5))
>>> b = a.ravel()
>>> b[0] = 55
>>> a
array([[55, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
Hoặc reshape
nó:
>>> a = numpy.arange(27).reshape((3, 3, 3))
>>> b = a.reshape((9, 3))
>>> b[0] = 55
>>> a
array([[[55, 55, 55],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
Theo hầu hết các trường hợp, những cả hai quay trở lại một cái nhìn của mảng ban đầu, chứ không phải là một bản sao.
7
Nếu bạn không biết hình dạng của mảng đầu vào của bạn:
images.reshape((images.shape[0], -1))
-1
kể định hình lại để làm việc ra các kích thước còn lại. Điều này giả định rằng bạn muốn làm phẳng trục hình ảnh đầu tiên.
Các vấn đề liên quan
- 1. NumPy mảng đa chiều slicing
- 2. Làm thế nào để viết một mảng đa chiều vào một tệp văn bản?
- 3. Làm thế nào để tìm minima địa phương của một mảng đa chiều trơn tru trong NumPy hiệu quả?
- 4. C/C++ Làm thế nào để sao chép một mảng char đa chiều mà không có vòng lặp lồng nhau?
- 5. Argmax mảng numpy trả về các chỉ số không phẳng
- 6. Làm thế nào để tạo một bản sao sâu của một mảng?
- 7. Làm thế nào để urlencode một mảng đa chiều?
- 8. Làm thế nào để sao chép một mảng đa chiều trong java?
- 9. Làm thế nào để chiếu một đa giác phẳng trên mặt phẳng trong không gian 3d
- 10. Làm cách nào để "làm phẳng" hoặc "chỉ mục" mảng 3D trong mảng 1D?
- 11. Làm thế nào để tạo một mảng bản ghi sumpy?
- 12. Tại sao asort làm việc với các mảng đa chiều?
- 13. Làm thế nào để chuyển đổi danh sách các mảng thành một mảng đa chiều
- 14. Làm cách nào để tìm .index của mảng đa chiều
- 15. Làm thế nào để chuẩn hóa một mảng numpy 2 chiều trong python ít tiết?
- 16. Làm thế nào để tạo một chuỗi từ mảng char mà không cần sao chép nó?
- 17. Làm thế nào để tạo mảng 0x0 Numpy?
- 18. Làm thế nào để transpose mảng đa chiều tại chỗ
- 19. Làm thế nào để tạo mảng đa chiều động trong ruby?
- 20. Làm thế nào để tạo một mảng đa chiều với kích thước hàng khác nhau?
- 21. Làm thế nào để Extrude một lưới 2D phẳng, cho nó chiều sâu
- 22. Làm thế nào để san bằng một mảng NumPy của đối tượng dtype
- 23. Làm thế nào tôi có thể dễ dàng làm phẳng mảng ba chiều trong Cocoa?
- 24. Làm thế nào để gán một mảng numpy 1D cho mảng numpy 2D?
- 25. Làm thế nào để lấy một data.frame vào một mảng đa chiều trong R?
- 26. Nhân bản mảng đa chiều
- 27. Làm thế nào để lặp lại các phần tử của một mảng dọc theo hai trục?
- 28. Làm thế nào để tạo bản sao của đối tượng lớp mà không cần tham chiếu?
- 29. NumPy: Kết nối đa chiều và unidimensional mảng
- 30. Chuyển đổi một std :: vector để một mảng NumPy mà không cần sao chép dữ liệu
Cảm ơn bạn! 'reshape' đã làm điều đó cho tôi. Tôi nghĩ trước khi nó sẽ phá vỡ ánh xạ một-một giữa các ma trận 2D và các vectơ 2D của tôi. Nhưng không, nó hoạt động! –