gpt4 book ai didi

python - numpy argmax 最大值小于某个数字

转载 作者:太空狗 更新时间:2023-10-30 01:12:33 25 4
gpt4 key购买 nike

我有一个 numpy 数组:

myArray
array([[ 1. , nan, nan, nan, nan],
[ 1. , nan, nan, nan, nan],
[ 0.63 , 0.79 , 1. , nan, nan],
[ 0.25 , 0.4 , 0.64 , 0.84 , nan]])

我需要为每一行找到最大值的列号,但最大值必须小于 1。

在上面的数组中,第 0,1 行应该返回 Nan。

第 2 行应返回 1。

第 3 行应返回 3。

我不确定如何在 argmax 上调节它。

最佳答案

这是 np.where 的一种方法-

m = a < 1  # Mask of elems < 1 and non-NaNs

# Set NaNs and elems > 1 to global minimum values minus 1,
# so that when used with argmax those would be ignored
idx0 = np.where(m, a,np.nanmin(a)-1).argmax(1)

# Look for rows with no non-NaN and < 1 elems and set those in o/p as NaNs
idx = np.where(m.any(1), idx0, np.nan)

sample 运行-

In [97]: a
Out[97]:
array([[ 1. , nan, nan, nan, nan],
[ 1. , nan, nan, nan, nan],
[ 0.63, 0.79, 1. , nan, nan],
[ 0.25, 0.4 , 0.64, 0.84, nan]])

In [98]: m = a < 1

In [99]: idx0 = np.where(m, a,np.nanmin(a)-1).argmax(1)

In [100]: idx0
Out[100]: array([0, 0, 1, 3])

In [101]: np.where(m.any(1), idx0, np.nan)
Out[101]: array([ nan, nan, 1., 3.])

关于python - numpy argmax 最大值小于某个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com