Python:ndarray 的 nanargmax 版本

Python: nanargmax version for ndarray

我是 Python 的超级新手。我有一个包含 NaN 的多维数组。如何获取数组中最大值的索引?

我尝试使用 numpy.nanargmax(),但似乎我无法将 nanargmax 与 ndarray 一起使用?

>>> a=np.arange(24).reshape(6,4).astype('float')
>>> a
array([[ 0.,  1.,  2.,  3.],
       [ 4.,  5.,  6.,  7.],
       [ 8.,  9., 10., 11.],
       [12., 13., 14., 15.],
       [16., 17., 18., 19.],
       [20., 21., 22., 23.]])
>>> a[5, 2]=np.NaN
>>> a.argmax()
22
>>> a.argmin()
22
>>> a.nanargmax()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'nanargmax'

此外,为什么指数会“扁平化”?有没有办法在行 x 列格式中使用 return 索引?

抱歉提出愚蠢的问题!

谢谢,

姆林马伊

numpy 中有许多函数可以通过模块使用,但不能作为 ndarray 上的方法使用 - 这就是其中之一。您可以像这样在 ndarray 上调用 nanargmax:

import numpy as np
a=np.arange(24).reshape(6,4).astype('float')
print(np.nanargmax(a))

或者您可以使用几种不同的方法来查找位置

np.nanargmax(a)  # ---- 23

np.where(a == np.nanargmax(a), 1, 0)
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 1]])

row, col = np.where(a == np.nanargmax(a))

row, col
(array([5], dtype=int64), array([3], dtype=int64))