两个 NumPy 数组的绝对差

新手上路,请多包涵

是否有一种有效的方法/函数可以从一个矩阵中减去另一个矩阵并将绝对值写入新矩阵?我可以一个条目一个条目地做,但是对于大矩阵,这会相当慢……

例如:

 X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]

Y = [[5,8,1],
[6,7,3],
[4,5,9]]

for i in range(len(r_0)):
    for j in range(len(r)):
        delta_r[i][j]= sqrt((r[i][j])**2 - (r_0[i][j])**2)

原文由 Array 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 561
2 个回答

如果你想要两个矩阵之间的绝对元素差异,你可以很容易地用 NumPy 减去它们并在结果矩阵上使用 numpy.absolute

 import numpy as np

X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]

Y = [[5,8,1],
[6,7,3],
[4,5,9]]

result = np.absolute(np.array(X) - np.array(Y))

输出

 [[7 1 2]
 [2 2 3]
 [3 3 0]]

或者( _虽然不必要_),如果您需要在本机 Python 中这样做,您可以在嵌套列表理解中将维度压缩在一起。

 result = [[abs(a-b) for a, b in zip(xrow, yrow)]
          for xrow, yrow in zip(X,Y)]

输出

 [[7, 1, 2], [2, 2, 3], [3, 3, 0]]

原文由 miradulo 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果将 2D 数组转换为 numpy 数组,这样做就变得微不足道了:

 import numpy as np

X = [[12, 7, 3],
     [4,  5, 6],
     [7,  8, 9]]

Y = [[5,  8, 1],
     [6,  7, 3],
     [4,  5, 9]]

X, Y = map(np.array, (X, Y))

result = X - Y

Numpy 旨在轻松高效地处理矩阵。

此外,您谈到了减法矩阵,但您似乎还想对各个元素进行平方,然后对结果求平方根。使用 numpy 也很容易:

 result = np.sqrt((A ** 2) - (B ** 2))

原文由 cs95 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题