2017-05-15 12 views
-3

ループ内部マトリックスと操作Iは、2つのマトリックスを有し、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'rows(即ち、0,2及び3)の一部を減算する必要

Index=np.array([0,2,3]) 
for i in Index: 
    A[i,:]=A[i,:]-B[i,:] 

を使用しますが、マトリズ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]]) 

この操作を行う正しい方法は何ですか?私はこの問題を実現するのに長い時間を要しました(私が解決しようとしている実際の問題はより多くの変数を持っています)、それを理解できないようです。

答えて

1

あなたはsubstractを意味しなければ、あなたは

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

代わりの

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

はい、マイナス記号を使用しています。 Pythonがコンポーネント単位で操作を行っていないので、問題は依然として続きます。 – Fawcett512

+0

期待される出力または 'Index = np.array([0,2,3])'に問題があります。与えられた 'Index'から期待される出力を得る方法はないようです。 @ Fawcett512 – luoluo

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]) 

これは同じ回答を与えます。