In [261]: (x>200).tolist().index(True)
Out[261]: 2
In [262]: (x>400).tolist().index(True)
Out[262]: 3
In [263]: (x>600).tolist().index(True)
...
ValueError: True is not in list
型 stringfind返回一个-1,如果没有找到该值。
In [266]: def foo(test):
...: if not test.any():
...: return -1
...: return np.argmax(test)
...:
In [267]: foo(x>200)
Out[267]: 2
In [268]: foo(x>400)
Out[268]: 3
In [269]: foo(x>600)
Out[269]: -1
a=np.array([30, 120, 240, 510])
num = 200
np.argmax(a[a<num])
型 输出: 如果没有满足阈值,这将引发ValueError而不是0:
num = 20
np.argmax(a[a<num])
型 输出:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-10-d373c6004311> in <cell line: 3>()
1 a=np.array([30, 120, 240, 510])
2 num = 20
----> 3 np.argmax(a[a<num])
2 frames
/usr/local/lib/python3.10/dist-packages/numpy/core/fromnumeric.py in _wrapfunc(obj, method, *args, **kwds)
55
56 try:
---> 57 return bound(*args, **kwds)
58 except TypeError:
59 # A TypeError occurs if the object does have such a method in its
ValueError: attempt to get argmax of an empty sequence
2条答案
按热度按时间70gysomp1#
字符串
在大阈值的情况下,比较产生所有
False
。最大值是False
,第0项是False
。您可能需要对所有
False
测试x>n
,并在这种情况下返回不同的值。这不是一个通用定义的行为。列表有一个发现
型
string
find
返回一个-1
,如果没有找到该值。型
dgiusagp2#
argmax()
的例子:字符串
输出:
型
你的代码evals
0
是因为np.asarray(list_val) > num
是一个数组,其条目都是False
,即没有元素大于num
,所以np.argmax
将False
视为0,并将0作为argmax
抛出。如果你想有一个阈值,试试
np.argmax(a[a<num])
:型
输出:
型
或者:
型
输出:
如果没有满足阈值,这将引发
ValueError
而不是0
:型
输出:
型