在 Numpy 中用另一个数组索引一个数组
考虑两个矩阵,A 和 B ,其中 A 包含任意值并且B 保存 A 中元素的索引。任务是根据 B 指定的索引从 A 中提取元素。此索引允许选择性元素检索。
使用高级索引的解决方案:
Numpy 的高级索引使用表达式启用此操作:
A[np.arange(A.shape[0])[:,None], B]
此方法利用从 B 检索的行索引和列索引的组合来检索A.
使用线性索引的解决方案:
另一种方法涉及线性索引:
m, n = A.shape out = np.take(A, B + n*np.arange(m)[:,None])
这里,m 和 n 代表维度A 以及 np.take() 函数中的操作确保基于 B 的元素正确索引。
示例:
让我们用一个例子来说明这些解决方案示例:
import numpy as np A = np.array([[2, 4, 5, 3], [1, 6, 8, 9], [8, 7, 0, 2]]) B = np.array([[0, 0, 1, 2], [0, 3, 2, 1], [3, 2, 1, 0]]) # Advanced indexing result1 = A[np.arange(A.shape[0])[:,None], B] # Linear indexing m, n = A.shape result2 = np.take(A, B + n*np.arange(m)[:,None]) print("Result using advanced indexing:") print(result1) print("Result using linear indexing:") print(result2)
输出:
Result using advanced indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]] Result using linear indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]]
以上是如何用另一个 Numpy 数组索引一个 Numpy 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!