我有两个具有相同形状的 numpy 数组。一种带有值,一种带有“区域”。我需要在 valuearr 中找到与 zonearr 中的区域 3 重叠的最大值和值的索引:import numpy as npvaluearr = np.array([[10,11,12,13], [21,22,23,24], [31,32,33,34], [41,42,43,44]])zonearr = np.array([ [0,0,1,1], [0,0,1,1], [3,3,0,0], [3,3,0,0]])我想:valuearr[np.argwhere(zonearr==3)].max()44什么时候应该是42。为了获得索引,我尝试ind = np.unravel_index(np.argmax(valuearr[np.argwhere(zonearr==3)], axis=None), valuearr.shape)这当然不起作用,因为最大值不是 44 并且还会给出错误:builtins.ValueError:索引 19 超出大小为 16 的数组的范围
2 回答

慕哥6287543
TA贡献1831条经验 获得超10个赞
请尝试以下代码
np.max(valuearr[np.where(zonearr==3)])
它从 中获取元素的索引zonearr
,其中的值等于 '3'。接着,valuearr
通过得到的索引得到最大元素。
要获取元素 42 的索引(根据您的示例),请使用以下代码:
np.argwhere(valuearr==np.max(valuearr[np.where(zonearr==3)]))
添加回答
举报
0/150
提交
取消