我在这里遗漏了什么吗?我希望以下代码片段中的
np.max
将返回 [0, 4]
...
>>> a
array([[1, 2],
[0, 4]])
>>> np.max(a, axis=0)
array([1, 4])
感谢您的指点。
看起来您想要包含最大值的行,对吧?
max(axis=0)
独立返回 [1,0] 和 [2,4] 中的最大值。
没有 axis 参数的 argmax
找到整个数组的最大值 - 以扁平形式。要将索引转换为行号,我们必须使用 unravel_index
:
In [464]: a.argmax()
Out[464]: 3
In [465]: np.unravel_index(3,(2,2))
Out[465]: (1, 1)
In [466]: a[1,:]
Out[466]: array([0, 4])
或者用一种表达方式:
In [467]: a[np.unravel_index(a.argmax(), a.shape)[0], :]
Out[467]: array([0, 4])
从答案的长度可以看出,这不是沿轴/轴上最大值的通常定义。
numpy 数组中沿轴求和可以让您更深入地了解“沿轴”的含义。相同的定义适用于
sum
、mean
和 max
操作。
====================
要选择具有最大
norm
的行,首先计算范数。 norm
以相同的方式使用 axis
参数。
In [537]: np.linalg.norm(a,axis=1)
Out[537]: array([ 2.23606798, 4. ])
In [538]: np.argmax(_)
Out[538]: 1
In [539]: a[_,:]
Out[539]: array([0, 4])