numpy中的一些数组索引
以下数组中的值等于查找索引numpy中的一些数组索引,numpy,Numpy,以下数组中的值等于查找索引 lookup = np.array([60, 40, 50, 60, 90]) 最大值为90 所以,结果的第一个元素是4 这样, 预期结果=数组([4,2,0,4,4,4,4,4,4,0]) 如何得到它 我试着: a = np.array([1, 2, 0, 4, 3, 2, 4, 2, 0]) b = np.array([0, 1, 2, 3, 3, 4, 1, 2, 1]) c = np.array([4, 2, 1, 4, 4,
lookup = np.array([60, 40, 50, 60, 90])
最大值为90
所以,结果的第一个元素是4
这样,
预期结果=数组([4,2,0,4,4,4,4,4,4,0])
如何得到它
我试着:
a = np.array([1, 2, 0, 4, 3, 2, 4, 2, 0])
b = np.array([0, 1, 2, 3, 3, 4, 1, 2, 1])
c = np.array([4, 2, 1, 4, 4, 0, 4, 4, 2])
array 1st column elements lookup value
a 1 --> 40
b 0 --> 60
c 4 --> 90
我出错了
索引器错误:只有整数、切片(:)、省略号(…)、numpy.newaxis(无)以及整数或布尔数组是有效的索引是否要:
d = np.vstack([a, b, c])
print (d)
res = lookup[d]
res = np.max(res, axis = 0)
print (d[enumerate(lookup)])
输出:
d = np.vstack([a,b,c])
# option 1
rows = lookup[d].argmax(0)
d[rows, np.arange(d.shape[1])]
# option 2
(lookup[:,None] == lookup[d].max(0)).argmax(0)
你的代码有什么问题?您希望
d[enumerate(lookup)]
做什么?您正在寻找双argsort。不久将发布。同时,请编辑问题以包括以下内容:error@MadPhysicist您的解决方案?而不是两行:(lookup[:,None]==lookup[d].max(0)).argmax(0)
。第一个选项更好,因为第二个选项创建布尔值的完整矩阵并查找非零元素。
array([4, 2, 0, 4, 4, 4, 4, 4, 0])