Numpy 从另一个数组索引中提取数组元素
我有一个numpy数组,一个: 我有另一个数组,b: 我想从数组b中提取最小值索引 然后,要使用索引ixs从数组a中提取元素: 预期的答案是: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 不 欢迎您提出任何想法您
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]])