考虑以下NumPy数组:
a = np.array([[1,4], [2,1],(3,10),(4,8)])
这给出了一个如下所示的数组:
array([[ 1, 4],
[ 2, 1],
[ 3, 10],
[ 4, 8]])
我要做的是找到第二列的最小值(在本例中为1),然后报告该对的另一个值(在本例中为2)。我尝试过使用像argmin这样的东西,但是第一列中的1被绊倒了。
有没有办法轻松完成这项工作?我也考虑过对数组进行排序,但我似乎无法以一种将对保持在一起的方式工作。数据是通过如下循环生成的,所以如果有更简单的方法来执行此操作不是一个numpy数组,我也会将其作为答案:
results = np.zeros((100,2))
# Loop over search range, change kappa each time
for i in range(100):
results[i,0] = function1(x)
results[i,1] = function2(y)
答案 0 :(得分:20)
怎么样
a[np.argmin(a[:, 1]), 0]
<强>击穿强>
一个。抓住第二栏
>>> a[:, 1]
array([ 4, 1, 10, 8])
湾获取第二列中最小元素的索引
>>> np.argmin(a[:, 1])
1
℃。索引a
以获取相应的行
>>> a[np.argmin(a[:, 1])]
array([2, 1])
d。并采取第一个元素
>>> a[np.argmin(a[:, 1]), 0]
2
答案 1 :(得分:5)
使用np.argmin
可能是解决此问题的最佳方法。要在纯python中执行此操作,您可以使用:
min(tuple(r[::-1]) for r in a)[::-1]