亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我應該如何評估浮點 numpy 矩陣的等效性?

我應該如何評估浮點 numpy 矩陣的等效性?

狐的傳說 2021-06-15 13:09:36
在處理涉及各種逆變換的矩陣等價問題時,我發現了一些我想澄清的意外行為。我已經使所有矩陣在這里等價,因為實際的轉換與我遇到的問題并不真正相關。a = np.matrix([ 1, 1], [-1, 4]])x = inv(a)y = inv(a)z = inv(a)(x == y & z).all()Note: x = matrix([ 0.8, -0.2],                 [ 0.2,  0.2]]) 它返回以下錯誤消息:TypeError: ufunc 'bitwise_and' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''是否因為&運算符不能與浮點一起使用而引發此錯誤?以下方法似乎返回正確的答案,但我會很感激為給定的問題提供首選方法的輸入。(np.equal(x, y) & np.equal(y, z)).all()Truenp.equal([x,y,z], [y,z,x]).all()True
查看完整描述

2 回答

?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

&按位與(參見維基百科)。似乎您想檢查矩陣是否相同 - 即檢查兩者是否x == yx == z,在這種情況下您需要邏輯和,例如像這樣:

np.logical_and(x==y, x==z).all()

或者,正如評論中的建議,您可以使用np.isclose

np.logical_and(np.isclose(x, y), np.isclose(x, z)).all()

您的兩個建議有效的原因是:

  • 第一個有效,因為 False/True 被理解為 0/1,所以在這種情況下按位運算恰好等于邏輯運算。

  • 第二個建議構造從三個二維矩陣和檢查平等3D矩陣作為檢查x == y,y == z以及z == x,但是這些中的一個是多余的。


查看完整回答
反對 回復 2021-06-16
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

按照numpy的文件bitwise_and

“僅處理整數和布爾類型?!?/p>

我懷疑這是你的TypeError.

為了檢查浮點矩陣的等效性,我過去定義了可接受的誤差范圍,并檢查兩個矩陣之間的每對元素是否在該范圍內。



查看完整回答
反對 回復 2021-06-16
  • 2 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號