np.count_nonzero(~np.isnan(data))
~
から返されたブール行列を反転しnp.isnan
ます。
np.count_nonzero
0 \ falseではない値をカウントします。.sum
同じ結果が得られるはずです。しかし、おそらくもっと明確に使用するcount_nonzero
テスト速度:
In [23]: data = np.random.random((10000,10000))
In [24]: data[[np.random.random_integers(0,10000, 100)],:][:, [np.random.random_integers(0,99, 100)]] = np.nan
In [25]: %timeit data.size - np.count_nonzero(np.isnan(data))
1 loops, best of 3: 309 ms per loop
In [26]: %timeit np.count_nonzero(~np.isnan(data))
1 loops, best of 3: 345 ms per loop
In [27]: %timeit data.size - np.isnan(data).sum()
1 loops, best of 3: 339 ms per loop
data.size - np.count_nonzero(np.isnan(data))
ここではかろうじて最速のようです。他のデータは異なる相対速度の結果を与えるかもしれません。