Python中循环内矩阵的操作

Python中循环内矩阵的操作,python,matrix,Python,Matrix,我有两个矩阵,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

我有两个矩阵,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]])

做这个手术的正确方法是什么?我花了很长时间才意识到这个问题(我试图解决的真正问题有更多的变量),但似乎无法解决它

如果您的意思是减法,那么您应该使用

A[i,:]=A[i,:]-B[i,:]
而不是

A[i,:]=A[i,:]+B[i,:]

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,:])
将为您提供以下矩阵:

[[0, 1, 2],
 [4, 5, 6],
 [4, 5, 6],
 [6, 7, 8]])
这就是你想要的吗?为了获得更好的性能,您还可以只更改

A[indices]=np.subtract(A[indices],B[indices])

这将给出相同的答案。

是的,我的意思是使用减号。显然,这个问题仍然存在,因为Python没有将操作组件化,所以预期的输出或
Index=np.array([0,2,3])
有问题。似乎无法从给定的
索引中获得预期的输出@福塞特512