Numpy 从另一个数组索引中提取数组元素

Numpy 从另一个数组索引中提取数组元素,numpy,Numpy,我有一个numpy数组,一个: 我有另一个数组,b: 我想从数组b中提取最小值索引 然后,要使用索引ixs从数组a中提取元素: 预期的答案是: result = [[-11.54228119] [3.22814204] [-10.64537733]] 我试着: ixs = np.argmin(b, axis=1) print ixs [2,2,2] result = np.take(a, ixs) print result 不 欢迎您提出任何想法您

我有一个numpy数组,一个:

我有另一个数组,b:

我想从数组b中提取最小值索引

然后,要使用索引ixs从数组a中提取元素:

预期的答案是:

result = [[-11.54228119]
          [3.22814204]
          [-10.64537733]]
我试着:

ixs = np.argmin(b, axis=1)

print ixs
[2,2,2]

result = np.take(a, ixs)
print result

欢迎您提出任何想法

您可以使用

result = a[np.arange(a.shape[0]), ixs]

np.arange将为每一行生成索引,ixs将为每一列生成索引。因此,有效的结果将产生所需的结果

您可以尝试使用以下代码

np.take(a, ixs, axis = 1)[:,0]
初始部分将创建一个3乘3的数组,并对第一列进行切片

>>> np.take(a, ixs, axis = 1)

array([[-11.54228119, -11.54228119, -11.54228119],
       [  3.22814204,   3.22814204,   3.22814204],
       [-10.64537733, -10.64537733, -10.64537733]])

更直接,可能没有ixs=np.argminb,轴=1,你需要这样做才能在bi中找到min。你不想使用result=a[np.arangea.shape[0],ixs],而是想在它之前做点什么…,有更好的选择吗?你说的在它之前是什么意思。。。这样做有什么问题?我想替换ixs=np.argminb,axis=1
result = a[np.arange(a.shape[0]), ixs]
np.take(a, ixs, axis = 1)[:,0]
>>> np.take(a, ixs, axis = 1)

array([[-11.54228119, -11.54228119, -11.54228119],
       [  3.22814204,   3.22814204,   3.22814204],
       [-10.64537733, -10.64537733, -10.64537733]])