[英]Numpy array equality boolean
以下兩種方法應該產生相同的結果,但似乎它們沒有:
方法1 :
#Generate an array with 12 annual fractions corresponding to each month
ann_frac = np.arange(1,13,1).reshape([12,1])
ann_frac = ann_frac[:,0]/12
Output:
array([0.08333333, 0.16666667, 0.25 , 0.33333333, 0.41666667,
0.5 , 0.58333333, 0.66666667, 0.75 , 0.83333333,
0.91666667, 1. ])
方法2 :
i = np.arange(1,13,1)
ann_frac2 = (i/12).reshape([12,1])
Output:
array([[0.08333333],
[0.16666667],
[0.25 ],
[0.33333333],
[0.41666667],
[0.5 ],
[0.58333333],
[0.66666667],
[0.75 ],
[0.83333333],
[0.91666667],
[1. ]])
比較方法:
ann_frac2==ann_frac
Output:
array([[False],
[False],
[False],
[False],
[False],
[False],
[False],
[False],
[False],
[False],
[False],
[False]])
好像有點奇怪。 有什么解釋嗎? 顯然,如果只想比較兩個不同 arrays 中的數字是否相等,上面的示例表明,即使數字可以相同,創建和存儲數字的方式也會產生意想不到的行為。
我認為您正在將 arrays 與不同的維度進行比較。 我猜你想要的是
ann_frac = np.arange(1,13,1).reshape([12,1])
ann_frac1 = ann_frac[:,0]/12
i = np.arange(1,13,1)
ann_frac2 = (i/12).reshape([12,1])
ann_frac3 = (i/12).reshape(12)
正確的比較應該是
ann_frac3==ann_frac1
與 output
array([ True, True, True, True, True, True, True, True, True,
True, True, True])
更好的是
(ann_frac3==ann_frac1).all()
與 output
True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.