使用 NumPy 数组进行索引提取
在 NumPy 中处理多维数组时,通常需要根据索引提取特定元素。在这方面,可能会出现某些情况,其中一个数组 (B) 充当另一个数组 (A) 第二维的索引。
考虑一个具有两个数组 A 和 B 的示例:
A = np.array([[0,1], [2,3], [4,5]]) B = np.array([[1], [0], [1]], dtype='int')
我们的目标是从A的每一行中提取一个元素,其中元素索引由B中对应的元素决定。期望的输出是:
C = np.array([[1], [2], [5]])
使用整数数组索引的解决方案:
我们可以使用 NumPy 的纯整数数组索引来代替广播 B:
A[np.arange(A.shape[0]),B.ravel()]
这里,np.arange(A.shape[0]) 创建了一个对应于的索引数组A 中的行数,而 B.ravel() 将 B 展平为一维数组。通过组合这些,我们可以从 A 中提取适当的元素。
示例运行:
print(A) print(B) print(A[np.arange(A.shape[0]),B.ravel()])
输出:
[[0 1] [2 3] [4 5]] [[1] [0] [1]] [1 2 5]
这种方法为我们的提取问题提供了简洁高效的解决方案。
以上是如何使用整数数组索引从 NumPy 数组中提取元素?的详细内容。更多信息请关注PHP中文网其他相关文章!