Python 查找numpy数组中的最小值以及该数组其余部分的相应值';s排
考虑以下NumPy阵列:Python 查找numpy数组中的最小值以及该数组其余部分的相应值';s排,python,numpy,Python,Numpy,考虑以下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却把它弄错了 有没有一种方法可以轻松做到这一点?我也考虑过对数组进行排序,但我似乎
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)
怎么样
a[np.argmin(a[:, 1]), 0]
细分
a。抓住第二列
>>> a[:, 1]
array([ 4, 1, 10, 8])
>>> np.argmin(a[:, 1])
1
b。获取第二列中最小元素的索引
>>> a[:, 1]
array([ 4, 1, 10, 8])
>>> np.argmin(a[:, 1])
1
c。索引a
,以获得相应的行
>>> a[np.argmin(a[:, 1])]
array([2, 1])
d。以第一个元素为例
>>> a[np.argmin(a[:, 1]), 0]
2
使用
np.argmin
可能是解决此问题的最佳方法。要在纯python中执行此操作,可以使用:
min(a中r的元组(r[::-1])[::-1]
但是为了我自己的理智,你能解释一下这到底对我有什么逻辑作用吗?试图避免货物邪教编码。完成-希望这是有意义的