2017-08-01 3 views
0

私は複素行列を作成し、1 + 0jの値に0,0のエントリを割り当てようとしています。ここで私が書いたコードは次のとおりです。ただし行列のエントリに値を代入できません

import numpy as n 
import cmath 

M=n.zeros((5,5),dtype=complex) 
M[0:0]=1+0j 
print M 

、実行した後、0,0エントリがされ、まだゼロ:

[[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] 
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] 
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] 
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j] 
[ 0.+0.j 0.+0.j 0.+0.j 0.+0.j 0.+0.j]] 

私のコードで何が悪いのでしょうか?それを行う適切な方法は何ですか?

+0

は 'M [0,0]'、 'M [0:0]'は '0'行から' 0'(排他的)なので基本的に空であることを意味しますview – Julien

答えて

0

は、あなたはこのようなあなたの行列要素の参照をコーディングする必要があります。

M[0,0]=1+0j 

構文M [0:0]にちょうど最初のサブリストの前に、すなわち空の要素最初のサブリストを意味します。 M [0:1]

>>>> M[0:1] 
    array([[ 1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j]]) 
+1

2次元配列の場合、行0と列0の要素は 'M [0、0]'を使ってアクセスする必要があります。ほとんどの場合、 'M [0] [0]'は動作しますが、非効率的です。 –

+0

ありがとう、私は私の答えを編集しました – verisimilidude

関連する問題