考虑一下阵列 a
a = np.array([3, 3, np.nan, 3, 3, np.nan])
Run Code Online (Sandbox Code Playgroud)
我可以
np.isnan(a).argmax()
Run Code Online (Sandbox Code Playgroud)
但这需要找到所有np.nan只是为了找到第一个.
有更有效的方法吗?
我一直在试图弄清楚我是否可以传递一个参数,np.argpartition使np.nanget首先排序而不是last.
关于[dup]的编辑.
这个问题有几个不同的原因.
isnan.关于第二次[dup]的编辑.
解决平等和问题/答案仍然很老,很可能已经过时了.
我不明白为什么还没有进行如此基本的优化:
In [1]: %timeit np.ones(10**6).any()
100 loops, best of 3: 7.32 ms per loop
In [2]: %timeit np.ones(10**7).any()
10 loops, best of 3: 59.7 ms per loop
Run Code Online (Sandbox Code Playgroud)
即使结论是第一项的证据,也扫描整个阵列.