Solusi Ray bagus. Namun, di komputer saya, ini sekitar 2,5x lebih cepat untuk digunakan numpy.sumsebagai pengganti numpy.min:
In [13]: %timeit np.isnan(np.min(x))
1000 loops, best of 3: 244 us per loop
In [14]: %timeit np.isnan(np.sum(x))
10000 loops, best of 3: 97.3 us per loop
Berbeda dengan min, sumtidak memerlukan percabangan, yang pada perangkat keras modern cenderung cukup mahal. Ini mungkin alasan mengapa sumlebih cepat.
sunting Tes di atas dilakukan dengan satu NaN tepat di tengah-tengah array.
Menarik untuk dicatat bahwa minkeberadaan NaN lebih lambat dibandingkan saat tidak ada. Tampaknya juga menjadi lebih lambat karena NaN semakin mendekati awal larik. Di sisi lain, sumthroughput tampak konstan terlepas dari apakah ada NaN dan di mana lokasinya:
In [40]: x = np.random.rand(100000)
In [41]: %timeit np.isnan(np.min(x))
10000 loops, best of 3: 153 us per loop
In [42]: %timeit np.isnan(np.sum(x))
10000 loops, best of 3: 95.9 us per loop
In [43]: x[50000] = np.nan
In [44]: %timeit np.isnan(np.min(x))
1000 loops, best of 3: 239 us per loop
In [45]: %timeit np.isnan(np.sum(x))
10000 loops, best of 3: 95.8 us per loop
In [46]: x[0] = np.nan
In [47]: %timeit np.isnan(np.min(x))
1000 loops, best of 3: 326 us per loop
In [48]: %timeit np.isnan(np.sum(x))
10000 loops, best of 3: 95.9 us per loop