python - 根据其他数组从 numpy 数组中选择值

标签 python python-3.x pandas numpy

假设我有两个数组 ab:

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/

相关文章:

python - Pandas 在某些索引点增加整数?

python - 使用 Google App Engine 在 Django Python 中处理 session

python - 如何让 scrapy 使用 url 迭代存档?

python - 为什么 hashlib 比 sha256 的其他代码更快?如何让我的代码接近 hashlib 性能?

excel - 如何使用Python将文本文件嵌入到Excel单元格中

python - 如何使用 read_sql_query (pandas 数据帧)指示多索引列

python - 删除numpy数组的空维度

python - 为什么第一次迭代中的对象在第二次迭代中被删除?

django - python_ldap |在变量中提供证书内容

Python - 从 Google Finance 中提取指数数据