假设我有两个数组 a
和 b
:
a = np.array([[1,2,3], [4,5,6], [7,8,9]])
b = np.array([[3,1,0], [1,2,3], [3,0,2]])
我想从 a
中的每一行中选择与 b
中最高值(行内)相对应的项目,即我想要输出 [1, 6, 7]。
在 pandas/NumPy 中,什么是快速解决这个问题的方法?它会比在常规 Python 中使用 for 循环更快吗?看起来很简单,但是我还没有找到好的解决办法。我是 pandas/NumPy 的新手,但我认为必须有一个简单的解决方案?
最佳答案
您可以使用np.argmax
使用 axis=1
获取 b
行中每个最大值的索引,
然后使用高级索引从 a
中获取所需的元素,如下所示:
import numpy as np
a = np.array([[1,2,3], [4,5,6], [7,8,9]])
b = np.array([[3,1,0], [1,2,3], [3,0,2]])
b_largest_idx = np.argmax(b, axis=1)
print(a[range(a.shape[0]),b_largest_idx])
输出:
[1 6 7]
关于python - 根据其他数组从 numpy 数组中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61058371/