假设我有矩阵
import numpy as np
A = np.matrix([[1,2,3,33],[4,5,6,66],[7,8,9,99]])
我试图理解函数argmax,据我所知它返回最大值
如果我在Python上尝试过:
np.argmax(A[1:,2])
我应该获得第二行中的最大元素,直到行的末尾(第三行)和第三列?所以它应该是数组[6 9],而arg max应该返回9?但是为什么当我在Python上运行它时,它会返回值1?
如果我想在第3列(即9)中从第2行开始返回最大元素,我应该如何修改代码?
我已经检查了Python文档,但仍然有点不清楚。感谢您的帮助和解释。
答案 0 :(得分:19)
否argmax
返回位置最大值。 max
返回最大值。
import numpy as np
A = np.matrix([[1,2,3,33],[4,5,6,66],[7,8,9,99]])
np.argmax(A) # 11, which is the position of 99
np.argmax(A[:,:]) # 11, which is the position of 99
np.argmax(A[:1]) # 3, which is the position of 33
np.argmax(A[:,2]) # 2, which is the position of 9
np.argmax(A[1:,2]) # 1, which is the position of 9
答案 1 :(得分:1)
attached: function() {
var event = new Event('custom-element-attached');
window.dispatchEvent(event);
}
是一个函数,它给出给定行或列中最大数字的索引,并且可以使用argmax
函数的轴属性来决定行或列。如果我们提供argmax
,那么它将从列中提供索引,如果我们给出axis=0
,那么它将从行中提供索引。
在您给出的示例axis=1
中,它将首先从wards的第1行获取值,并从这些行中获取唯一的第2列值,然后它将在结果矩阵中找到最大值的索引。
答案 2 :(得分:0)
花了我一段时间才能弄清楚这个功能。基本上,argmax返回您数组中最大值的 index 。现在,数组可以是一维或多维。以下是一些示例。
1维
a = [[1,2,3,4,5]]
np.argmax(a)
>>4
数组是一维的,因此该函数只返回数组中最大值(5)的索引,即4。
多个维度
a = [[1,2,3],[4,5,6]]
np.argmax(a)
>>5
在此示例中,数组是二维的,形状为(2,3)。由于在函数中未指定轴参数,因此numpy库将数组展平为一维数组,然后返回最大值的索引。在这种情况下,数组将转换为[[1,2,3,4,5,6]],然后返回索引6(即5)。
当参数为axis = 0
a = [[1,2,3],[4,5,6]]
np.argmax(a, axis=0)
>>array([1, 1, 1])
这里的结果起初让我有些困惑。由于将轴定义为0,因此函数现在将尝试沿着矩阵的行查找最大值。最大值6在矩阵的第二行中。第二行的索引为1。根据文档https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.argmax.html,将删除axis参数中指定的尺寸。由于原始矩阵的形状为(2,3)并且轴指定为0,因此返回矩阵将具有(3,)的形状,因为原始形状(2,3)中的2被删除了。现在,对于与原始矩阵中的列相同数量的元素,重复其中找到最大值的3。
当参数为axis = 1
a = [[1,2,3],[4,5,6]]
np.argmax(a, axis=1)
>>array([2, 2])
与上面的概念相同,但是现在返回列的索引,在该索引处可以使用最大值。在此示例中,最大值6在第3列的索引2中。形状为(2,3)的原始矩阵的列将被删除,转换为(2,),因此返回数组将显示两个元素,每个元素显示在其中找到最大值的列的索引。
答案 3 :(得分:0)
在python的第一步中,我已经测试了此功能。这个示例的结果阐明了 argmax 的工作方式。
示例:
# Generating 2D array for input
array = np.arange(20).reshape(4, 5)
array[1][2] = 25
print("The input array: \n", array)
# without axis
print("\nThe max element: ", np.argmax(array))
# with axis
print("\nThe indices of max element: ", np.argmax(array, axis=0))
print("\nThe indices of max element: ", np.argmax(array, axis=1))
结果示例:
The input array:
[[ 0 1 2 3 4]
[ 5 6 25 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
The max element: 7
The indices of max element: [3 3 1 3 3]
The indices of max element: [4 2 4 4]
在该结果中,我们可以看到3个结果。
参考: https://www.crazygeeks.org/numpy-argmax-in-python/
希望对您有帮助。