Суммирование длинных (> 20 миллионов элементов) массива в python numpy

Я новичок в python и numpy, поэтому, пожалуйста, извините меня, если эта проблема настолько примитивна! У меня есть массив отрицательных значений (он отсортирован):

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

Мне нужно добавить этот массив к его дубликату (но с положительными значениями), чтобы найти стандартное отклонение распределения, усредненное до нуля. Итак, я делаю следующее:

>>>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,)

Пока все очень хорошо, но странно то, что сумма этого нового массива не равна нулю:

>>>numpy.sum(total)
11610.6

Стандартное отклонение также совсем не близко к тому, что я ожидал, но я угадайте, что корень этой проблемы такой же: почему сумма не равна нулю?

Когда я применяю этот метод к небольшому массиву; например [-5, -3, -2] сумма становится равной нулю. Итак, я предполагаю, что проблема заключается в длине массива (более 20 миллионов элементов). Есть ли способ справиться с этой проблемой?

Если бы кто-нибудь мог мне в этом помочь, я был бы очень благодарен.

8
задан makhlaghi 22 December 2011 в 04:18
поделиться