Giả sử tôi có mảng numpy A có kích thước n x m x k và một mảng B có kích thước n x m có chỉ mục từ 1 đến k. Tôi muốn truy cập từng lát n x m của A bằng chỉ mục được cung cấp tại địa điểm này trong B, cho tôi một mảng có kích thước n x m.Numpy ưa thích lập chỉ mục trong nhiều kích thước
Chỉnh sửa: đó rõ ràng không phải là những gì tôi muốn! [[tôi có thể đạt được điều này bằng take
như thế này:
A.take(B)
]] cuối chỉnh sửa
thể này đạt được sử dụng lập chỉ mục ưa thích? Tôi có thể nghĩ rằng A[B]
sẽ cho kết quả tương tự, nhưng kết quả là trong một mảng có kích thước n x m x m x k (mà tôi không thực sự hiểu).
Lý do tôi không muốn sử dụng take
là tôi muốn để có thể gán phần một cái gì đó này, giống như
A[B] = 1
Giải pháp duy nhất làm việc mà tôi có cho đến nay là
A.reshape(-1, k)[np.arange(n * m), B.ravel()].reshape(n, m)
nhưng chắc chắn phải có cách dễ dàng hơn?
Điều thứ hai là. Có vẻ như tôi đã hiểu sai (hoặc lấy nó theo trục sai). Cảm ơn bạn đã làm rõ. –