我使用numpy來總結一個數組,並且它不適用於float32類型。我究竟做錯了什麼?一旦我直接完成一筆款項,然後使用numpy.sum。看下面的代碼numpy sum沒有給出float32類型的正確答案
import struct
import numpy as np
import matplotlib.pyplot as plt
import math
from pylab import *
xpt=128
ypt=128
zpt=256
bx1=np.zeros((xpt,ypt,zpt),dtype=float32)
bx2=np.zeros((xpt,ypt,zpt),dtype=float32)
bx3=np.zeros((xpt,ypt,zpt),dtype=float32)
bx1=bx1+1.0
bx2=bx2+1.5
bx3=bx3+2.0
dummy=0.0
for kxi in range (0,xpt) :
for kyi in range (0,ypt) :
for kzi in range (0,zpt) :
dummy=dummy+(bx1[kxi,kyi,kzi]*bx1[kxi,kyi,kzi]+bx2[kxi,kyi,kzi]*bx2[kxi,kyi,kzi]+bx3[kxi,kyi,kzi]*bx3[kxi,kyi,kzi])
print(dummy)
print(np.sum(bx1**2+bx2**2+bx3**2))
兩個輸出應該匹配。這使輸出:
30408704.0
3.1323e + 07
直和給出正確的結果,而np.sum是給了什麼。但是,如果我使用float64,那麼np.sum會給出正確的結果。這背後的原因是什麼?
謝謝。