Python中循环内矩阵的操作
我有两个矩阵,A和BPython中循环内矩阵的操作,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=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