我有两个矩阵,A和B.
A=np.matrix([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
B=np.matrix([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])
我想从A中减去一些B'行(即0,2和3)。我试图使用
Index=np.array([0,2,3])
for i in Index:
A[i,:]=A[i,:]-B[i,:]
但它没有用,因为matriz A应该看起来像
matrix([[0, 1, 2],
[1, 2, 3],
[4, 5, 6],
[6, 7, 8]])
我得到了
matrix([[ 1, 2, 3],
[ 2, 3, 4],
[ 7, 8, 9],
[10, 11, 12]])
进行此操作的正确方法是什么?我花了很长时间才意识到这个问题(我试图解决的真正问题有更多变量)并且似乎无法弄明白。
答案 0 :(得分:1)
如果你的意思是减去,那么你应该使用
A[i,:]=A[i,:]-B[i,:]
而不是
A[i,:]=A[i,:]+B[i,:]
答案 1 :(得分:1)
Numpy具有逐元素减法,例如:
import numpy as np
A=np.matrix([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
B=np.matrix([[1,1,1],[2,2,2],[3,3,3],[4,4,4]])
indices = [0,2,3]
for i in indices:
A[i,:]=np.subtract(A[i,:], B[i,:])
将为A:
提供此矩阵[[0, 1, 2],
[4, 5, 6],
[4, 5, 6],
[6, 7, 8]])
这就是你追求的吗?为了获得更好的性能,您还可以更改A:
的特定行A[indices]=np.subtract(A[indices],B[indices])
哪个会给出相同的答案。