如何使用numpy.where查找2D数组的行和列

ezykj2lf  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(97)

代码试图从2D数组中找到最小值(测量距离)

dist1 = ma.sqrt(dist2**2+dist3**2)
minimum1 = dist1.min()

对于1D数组,我在检索最小位置时没有问题,但对于2D数组则没有问题。尝试:

imin1, jmin1 = ma.where(dist1 == dist1.min())

返回错误:ValueError: too many values to unpack (expected 2)
如果代码段更改为:

imin1 = ma.where(dist1 == dist1.min())

它返回一个元组,如(array([1238, 1238, 1238, ..., 1238, 1238, 1238]), array([ 0, 1, 2, ..., 3597, 3598, 3599]), array([0, 0, 0, ..., 0, 0, 0]))是否有一个直接的方法来找到最小(或最大)值的列和行?

nc1teljy

nc1teljy1#

可以使用argmin()函数来查找numpy数组的最小索引(row/col)。此函数返回扁平数组的索引。要获取行和列,可以使用unravel_index()

>>> x = np.array([[1,2,3],[4,0,5],[6,7,8]])
>>> np.unravel_index(np.argmin(x), x.shape)
(1, 1)

要查找最大索引,可以使用argmax()

相关问题