【发布时间】:2018-01-28 01:22:48
【问题描述】:
如何获取满足指定条件的 numpy 二维数组的行号和列号?例如,我有一个二维数组(所有浮点数),我想获取最小值或最大值所在的位置(行和列索引)。
【问题讨论】:
如何获取满足指定条件的 numpy 二维数组的行号和列号?例如,我有一个二维数组(所有浮点数),我想获取最小值或最大值所在的位置(行和列索引)。
【问题讨论】:
您可以使用np.where(),如下例所示:
In [46]: arr = np.arange(10, dtype=float32).reshape(5, 2)
In [47]: arr
Out[47]:
array([[ 0., 1.],
[ 2., 3.],
[ 4., 5.],
[ 6., 7.],
[ 8., 9.]], dtype=float32)
# get row and column index of minimum value in arr
In [48]: np.where(arr == arr.min())
Out[48]: (array([0]), array([0]))
# get the indices of maximum element in arr
In [49]: np.where(arr == arr.max())
Out[49]: (array([4]), array([1]))
即使您的数组中有多个最小值/最大值,上述方法也适用。
In [59]: arr
Out[59]:
array([[ 0., 0.],
[ 2., 3.],
[ 4., 5.],
[ 6., 7.],
[ 9., 9.]], dtype=float32)
In [60]: np.where(arr == arr.max())
Out[60]: (array([4, 4]), array([0, 1])) # positions: (4,0) and (4,1)
In [61]: np.where(arr == arr.min())
Out[61]: (array([0, 0]), array([0, 1])) # positions: (0,0) and (0,1)
【讨论】: