相关疑难解决方法(0)

python numpy中的长(> 2000万元素)数组求和

我是python和numpy的新手所以请原谅我,如果这个问题是如此简陋!我有一个负值数组(它已排序):

>>>neg
[ -1.53507843e+02  -1.53200012e+02  -1.43161987e+02 ...,  -6.37326136e-1 -3.97518490e-10  -3.73480691e-10]
>>>neg.shape
(12922508,)
Run Code Online (Sandbox Code Playgroud)

我需要将此数组添加到其副本(但具有正值)以查找分布的标准偏差平均为零.所以我做了以下事情:

>>>pos=-1*neg
>>>pos=pos[::-1] #Just to make it look symmetric for the display bellow!
>>>total=np.hstack((neg,pos))
>>>total
[-153.50784302 -153.20001221 -143.1619873  ...,  143.1619873   153.20001221  153.50784302]
>>>total.shape
(25845016,)
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好,但奇怪的是这个新数组的总和不是零:

>>>numpy.sum(total)
11610.6
Run Code Online (Sandbox Code Playgroud)

标准偏差也完全没有达到我的期望值,但我猜这个问题的根源与此相同:为什么总和不会导致零?

当我将这个方法应用于一个小数组时; 例如[-5,-3,-2],总和变为零.所以我猜问题在于数组的长度(超过2000万个元素).有什么办法可以解决这个问题吗?

如果有人能帮助我,我将非常感激.

python numpy

8
推荐指数
1
解决办法
743
查看次数

numpy.sum是否以避免数值错误的方式实现?

众所周知,累加数字会导致数字错误(例如,如果第一个数字非常大,而有许多其他小数字).

这可以通过非直接的方式将数字相加来解决.例如,参见:https://en.wikipedia.org/wiki/Kahan_summation_algorithm

numpy.sum是否以避免数值错误的方式实现?

python precision numpy numerical-methods

7
推荐指数
1
解决办法
992
查看次数

标签 统计

numpy ×2

python ×2

numerical-methods ×1

precision ×1