我有许多一维 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/