我有一个这样的数组:
array = np.random.randint(1, 100, 10000).astype(object)
array[[1, 2, 6, 83, 102, 545]] = np.nan
array[[3, 8, 70]] = None
现在,我想找到NaN
项的索引,忽略None
项,在这个例子中,我想得到[1, 2, 6, 83, 102, 545]
项的索引,我可以用np.equal
和np.isnan
得到NaN项的索引:
np.isnan(array.astype(float)) & (~np.equal(array, None))
我使用% timeit检查了此解决方案的性能,得到了以下结果:
243 µs ± 1.32 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
有更快的解决方案吗?
1条答案
按热度按时间kh212irz1#
经典的NaN测试。编写这样的NaN测试是促使NaN!= NaN设计决策的原因之一,因为IEEE 754设计者无法假设程序员可以访问
isnan
例程。当我尝试时,这明显优于问题中的代码:
当然,它的输出给予相同的: