python - 忽略指定值的 numpy 数组的平均值

标签 python arrays performance numpy graph-tool

我有许多一维 numpy ndarrays,其中包含给定节点与网络中我想计算平均值的所有其他节点之间的路径长度。事情很复杂,因为如果两个节点之间不存在路径,则算法会为给定的连接返回 2147483647 的值。如果我不处理这个值,它显然会严重夸大我的平均值,因为典型的路径长度在我的网络中介于 1 和 3 之间。

处理这个问题的一个选择是遍历所有数组的所有元素并将 2147483647 替换为 NaN 然后使用 numpy.nanmean 求平均数,但这可能不是最有效的方法。有没有一种方法可以用 numpy 忽略 2147483647 的所有值来计算平均值?

我应该补充一点,我可以有多达数百万个数组和数百万个值来计算平均值,因此在如何找到平均值方面的任何性能提升都会产生真正的不同。

最佳答案

为什么不为此使用您常用的 numpy 过滤?

m = my_array[my_array != 2147483647].mean()

顺便说一下,如果你真的想要速度,你的整个算法描述看起来肯定很幼稚,并且可以改进很多。

哦,我猜你正在计算均值,因为你已经严格检查了基础分布是否正态,所以它有意义,不是吗?

关于python - 忽略指定值的 numpy 数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39128145/

相关文章:

python - 列表理解迭代多个可迭代对象

java - 数组中的最小值始终设置为 0

javascript - 对字符串数组进行排序,使用另一个字符串数组来确定顺序

java - JMH 中这些奇怪的 boolean 值有什么用?

performance - CentOS CPU 使用率

python - jinja2模板引擎中的这个 "-"是做什么的?

python - 使用字典 python 从不同路径导入 csv

python - 从文本文件创建矩阵 - python

java - 调用不同类中的方法并传递数组

r - 为什么 range() 函数比 min 和 max 的组合慢?