簡體   English   中英

Numpy 數組相等 boolean

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM