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))
我是 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))