gpt4 book ai didi

python - 我应该如何评估浮点 numpy 矩阵的等效性?

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:35 25 4
gpt4 key购买 nike

在处理涉及各种逆变换的矩阵等价问题时,我发现了一些我想澄清的意外行为。我在这里使所有矩阵都相等,因为实际转换与我遇到的问题并不真正相关。

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''

引发此错误的原因是 & 运算符不能与 float 一起使用吗?以下方法似乎返回了正确的答案,但我希望能输入针对给定问题的首选方法。

(np.equal(x, y) & np.equal(y, z)).all()
True

np.equal([x,y,z], [y,z,x]).all()
True

最佳答案

&bitwise and (参见 Wikipedia)。您似乎想检查矩阵是否相同——即检查是否 x == yx == z,在这种情况下您需要 logical and ,例如像这样:

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,所以这种情况下的按位运算恰好等于逻辑运算。
  • 您的第二个建议是从三个 2D 矩阵构造一个 3D 矩阵并检查是否相等,如检查 x == yy == z z == x,但其中一个是多余的。

关于python - 我应该如何评估浮点 numpy 矩阵的等效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com