Нахождение минимального значения в массиве 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 в первом столбце

Есть ли способ сделать это легко? Я'мы также рассмотрели сортировку массива, но я могуПохоже, это работает так, что пары остаются вместе. Данные генерируются циклом, подобным следующему, поэтому еслиЭто более простой способ сделать это,не массив 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)

Ответы на вопрос(2)

Решение Вопроса

Как насчет

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])

д. И взять первый элемент

>>> a[np.argmin(a[:, 1]), 0]
2
 YXD19 февр. 2013 г., 12:57
Готово - надеюсь, что имеет смысл
 Fomite19 февр. 2013 г., 12:51
Хотя, ради моего здравомыслия, не могли бы вы объяснить логику того, что именно это делает для меня? Попытка избежать грузово-культового кодирования.

С помощьюnp.argmin вероятно, лучший способ справиться с этим. Чтобы сделать это в чистом Python, вы можете использовать:

min(tuple(r[::-1]) for r in a)[::-1]

Ваш ответ на вопрос