次の Matlab コード (のより複雑な形式) を変換したいと思います
a=zeros(9,9);
a(3+(1:3),6+(1:3))=1;
ナンピーへ。私は試した
from numpy import zeros, r_
a=zeros((9,9))
a[3+r_[0:3],6+r_[0:3]] = 1
しかし、これはマトリックスに 3 つの 1 しか入れません。Python で同様の (短い) 形式で matlab コードを記述するにはどうすればよいですか?
正直なところ、私はおそらくそうするだろう
>>> a = zeros((9,9))
>>> a[3:6, 6:9] = 1
またはハードコードされていない同等のもの。ただし、ここでのインデックス付けを Matlab のように見せたい場合は、ix_を使用できます。
>>> a = zeros((9,9))
>>> a[ix_(3+r_[0:3], 6+r_[0:3])] = 1
>>> a
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 1., 1., 1.],
[ 0., 0., 0., 0., 0., 0., 1., 1., 1.],
[ 0., 0., 0., 0., 0., 0., 1., 1., 1.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]])