一、通过np.max和np.where
通过np.max()找矩阵的最大值,再通过np.where获得最大值的位置。
a = np.random.randint(10, 100, size=9)
a = a.reshape((3,3))
r, c = np.where(a == np.max(a))
print(r,c) # 输出:(array([1]), array([1]))
输出的是两个array,分别是x和y数组,即找出了和这个最值相等的所有位置。
二、通过np.argmax
np.argmax可以直接返回最大值的索引,不过索引值是一维的,需要做一下处理得到其在二维矩阵中的位置。
a = np.random.randint(10, 100, size=9)
a = a.reshape((3,3))
m = np.argmax(a)
r, c = divmod(m, a.shape[1]) # r和c分别为商和余数,即最大值所在的行和列
# m是被除数, a.shape[1]是除数
print(r, c) # 输出:(2, 2)
直接输出一个tuple,说明只找到了最前面的那个
对于二维数组
对于二维矩阵,默认是求全局最值。也可以指定方向(是求每行的最大值还是求每列的最大值,结果也是一个ndarray),如下:
np.max(a,axis=0) #每列最大
np.max(a,axis=1) #每行最大