Ví dụ trong câu hỏi không hoàn toàn rõ ràng - dấu phẩy thừa bị thiếu hoặc thêm bộ đệm.
một này - ví dụ khoảng 3, 4 cho rõ ràng - cung cấp giải pháp cho các biến thể đầu tiên và tạo ra một mảng 2D có hiệu lực (như tiêu đề câu hỏi gợi ý) - "danh sách" tất cả các tọa độ:
>>> np.indices((3,4)).reshape(2,-1).T
array([[0, 0],
[0, 1],
[0, 2],
[0, 3],
[1, 0],
[1, 1],
[1, 2],
[1, 3],
[2, 0],
[2, 1],
[2, 2],
[2, 3]])
các biến thể khác đã được thể hiện trong câu trả lời khác bằng cách sử dụng 2x .swapaxes()
- nhưng nó cũng có thể được thực hiện với một np.rollaxis()
(hoặc mới np.moveaxis()
):
>>> np.rollaxis(np.indices((3,4)), 0, 2+1)
array([[[0, 0],
[0, 1],
[0, 2],
[0, 3]],
[[1, 0],
[1, 1],
[1, 2],
[1, 3]],
[[2, 0],
[2, 1],
[2, 2],
[2, 3]]])
>>> _[0,1]
array([0, 1])
Phương pháp này cũng hoạt động tương tự đối với các chỉ số N-chiều, ví dụ .:
>>> np.rollaxis(np.indices((5,6,7)), 0, 3+1)
Lưu ý: Chức năng np.indices
làm việc thực sự (C-tốc độ) nhanh chóng cho các phạm vi lớn.
Cách bạn định dạng, có vẻ như bạn muốn một mảng 3D có hình dạng (512, 512, 2) ... nhưng đánh dấu cú pháp bạn đã đưa ra là cho một mảng 2D có hình dạng (512 * 512, 2). Bạn có thể làm rõ? – lmjohns3