在Python中计算numpy ndarray中非NaN元素的数量

jjepsuomi:

我需要计算一个numpy ndarray矩阵中非NaN元素的数量。如何在Python中有效地做到这一点?这是我实现此目的的简单代码:

import numpy as np

def numberOfNonNans(data):
    count = 0
    for i in data:
        if not np.isnan(i):
            count += 1
    return count 

在numpy中是否有为此内置函数?效率很重要,因为我正在进行大数据分析。

Thnx寻求任何帮助!

M4rtini:
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))似乎几乎不是最快的。其他数据可能会给出不同的相对速度结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

计算数组中非Nan值的数量

计算熊猫行中非NaN值的数量和长度

如何在python中的numpy数组中计算n个元素的总和?

在Python中计算更大数量的模数

在Python的“ for”循环中计算NaN

在Python中计算数组的元素

在滚动中计算零 - numpy 数组(包括 NaN)

在Python中计算Unicode文本中非空格字符的最快方法

如何在Python中计算两个相同大小的numpy矩阵之间的元素明智的最小/最大值?[解决了]

如何计算数据框中一行中非NaN列的数量?

使用Pyspark计算Spark数据帧每列中非NaN条目的数量

在python中计算字典中关键字的数量

在python中计算互信息返回nan

如何在python中的字典列表中计算元素?

读取 csv 时不要在 Python 中计算相同的元素

计算get_weights()输出中非零元素数量的最快方法

计算Numba中的numpy数组中非零值的数量

在csv中计算“ NaN”的数量(不是零或空白)

计算Spark DataFrame中非空值的数量

计算矩阵中非零列的数量

在numpy中计算质心

python numpy ndarray元素均值

如何在python中以行分隔的字符串文字中计算数字的数量?

将图像分成 4x4 块并在 Python 中计算黑白像素的数量

Python pandas数据框:如何仅在数据框中计算和显示缺失值的数量?

如何在defaultdict(python)中计算元组中的唯一关键元素?

在 Python 中计算 2D 列表中最常见的元素

如何在Python的列表元素中计算子字符串的实例?

如何在python中计算一对多关系数据框中的元素