如何找到重叠的numpy数组的索引和最大值

我有两个具有相同形状的 numpy 数组。一种带有值,一种带有“区域”。我需要在 valuearr 中找到与 zonearr 中的区域 3 重叠的最大值和值的索引:


import numpy as np

valuearr = 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 的数组的范围


12345678_0001
浏览 206回答 2
2回答

慕哥6287543

请尝试以下代码np.max(valuearr[np.where(zonearr==3)])它从 中获取元素的索引zonearr,其中的值等于 '3'。接着,valuearr通过得到的索引得到最大元素。要获取元素 42 的索引(根据您的示例),请使用以下代码:np.argwhere(valuearr==np.max(valuearr[np.where(zonearr==3)]))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python