numpy.unravel_index() có hình dạng và chỉ mục phẳng thành một mảng và trả về bộ tuple đại diện cho chỉ mục đó trong mảng. Có một nghịch đảo? Tôi có thể tính toán nó bằng tay, nhưng điều này có vẻ như nó phải là một chức năng được xây dựng trong một nơi nào đó ...NumPy có nghịch đảo của unravel_index() không?
Trả lời
Kể từ numpy 1.6.0
(tháng năm 2011) có một built-in chức năng NumPy ravel_multi_index
Chuyển đổi một tuple của mảng chỉ số vào một loạt các chỉ số căn hộ, áp dụng chế độ ranh giới để đa-index.
(Điều này cũng được đề cập trong một chú thích bằng cách sử dụng Bi Rico nhưng thực sự sẽ xuất hiện như một câu trả lời)
Câu trả lời nằm trong numpy.ndarray.strides. Xem http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.strides.html
Không đáng tin cậy. Khi bạn lấy các mảng của mảng, thường xuyên sẽ thường xuyên chia sẻ cùng một dữ liệu và thực hiện các thủ đoạn sải chân. So sánh arange (15) .reshape ((3,5)) strides (đây sẽ là một mảng đẹp, liền kề) và arange (35) .reshape ((7,5)) [1 :: 2,:]. . –
Đúng, và sự không nhìn vào đó có thể là một nỗi đau thực sự. Nhưng nếu bạn đang lên kế hoạch thực hiện các thủ thuật xáo trộn chính mình (như tôi đã ở đây), hy vọng bạn có thể đảm bảo rằng mảng là tiếp giáp. – D0SBoots
này hoạt động:
def ravel_index(pos, shape):
res = 0
acc = 1
for pi, si in zip(reversed(pos), reversed(shape)):
res += pi * acc
acc *= si
return res
Nó không phải là một xây dựng trong lệnh, nhưng tôi đã luôn luôn sử dụng đoạn mã sau đây, giả định mặc định hàng-lớn indexing NumPy đang được sử dụng:
np.sum(np.array(index_tuple[:-1])*np.array(a_matrix.shape[1:]))+np.array(index_tuple[-1])
để lập chỉ mục giống như cột (cột chính), các chỉ số chỉ cần được hoán đổi:
np.sum(np.array(index_tuple[1:])*np.array(a_matrix.shape[:-1]))+np.array(index_tuple[0])
Ở trên, index_tuple và a_matrix là một tuple chứa các chỉ mục quan tâm và ma trận được lập chỉ mục tương ứng. Điều này không có vấn đề trên liên quan đến các bước tiến khi lát được lấy.
Kể từ 1.6 sumpy nó được xây dựng trong lệnh 'numpy.ravel_multi_index', http://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel_multi_index.html nhưng câu hỏi này là khá cũ. –
Cảm ơn, tôi đã không nhận thấy lệnh mới, vì vậy điều này rất hữu ích đối với tôi. –
- 1. Nghịch đảo trái trong numpy hoặc scipy?
- 2. Python NumPy - FFT và FFT nghịch đảo?
- 3. nghịch đảo của math.atan2?
- 4. Có một nghịch đảo của System.Diagnostics.ConditionalAttribute?
- 5. Có một nghịch đảo của toán tử Haskell $ không?
- 6. Tính nghịch đảo quaternion
- 7. NumPy ma trận thủ đoạn gian trá - tổng của ma trận nghịch đảo lần
- 8. Bắt nghịch đảo (1/x) các yếu tố của một mảng NumPy
- 9. Tính nghịch đảo của hàm - Thư viện
- 10. SSE: nghịch đảo nếu không không
- 11. Sự khác biệt của giả nghịch đảo giữa scipy và NumPy
- 12. Số nghịch đảo trong C#
- 13. STFT và ISTFT nghịch đảo trong Python
- 14. Mongoose: Làm thế nào để mô hình hóa một mối quan hệ nghịch đảo/nghịch đảo?
- 15. Có đáng để có một hàm trả về nghịch đảo của một hàm khác không?
- 16. Giải quyết cho nghịch đảo của một hàm trong R
- 17. Tính nghịch đảo của ma trận rất lớn
- 18. cách sử dụng nghịch đảo trong C
- 19. Thuật toán để tính toán nghịch đảo của đa thức
- 20. Nghịch đảo của bitwise AND trong C# là gì?
- 21. nén vectơ trong (nghịch đảo của đại diện)
- 22. Thuộc tính nghịch đảo trong NHibernate
- 23. Nghịch đảo trừu tượng tồi tệ nhất
- 24. Chức năng chuyển/giải nén (nghịch đảo của mã zip)?
- 25. Jenkins GitHub Plugin Chi nhánh nghịch đảo
- 26. Bộ lọc nghịch đảo của hình ảnh được hòa trộn so với tần số không gian
- 27. Eclipse nghịch đảo của F3 - Alt-Left không phải lúc nào cũng hoạt động
- 28. Thực hiện các hàm lượng giác nghịch đảo trong C#
- 29. "Nghịch đảo phụ thuộc" và "Thiết kế giao diện" có cùng nguyên tắc không?
- 30. Matlab nghịch đảo FFT từ pha/độ lớn chỉ
Tôi nghĩ bạn nên cập nhật các câu trả lời được chấp nhận như một trong những sử dụng 'ravel_multi_index'; hầu hết mọi người sẽ sử dụng 'NumPy 1.6' hoặc mới hơn bây giờ. – gerrit