Numpy 沿轴最大值

问题描述 投票:0回答:2

我在这里遗漏了什么吗?我希望以下代码片段中的

np.max
将返回
[0, 4]
...

>>> a
array([[1, 2],
       [0, 4]])

>>> np.max(a, axis=0)
array([1, 4])

感谢您的指点。

numpy
2个回答
7
投票

看起来您想要包含最大值的行,对吧?

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])

0
投票
a = np.array([
             [1,2],
             [0,4]
                  ])
np.max(a, axis=0)   

对于二维数组,我们有两个轴,axis=0 和 axis=1。

axis=0 表示沿列移动,axis=1 表示沿行移动。

代码的输出是一个数组[1,4],这意味着1是第一列的最大值,4是第二列的最大值。

© www.soinside.com 2019 - 2024. All rights reserved.