2

次の 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 コードを記述するにはどうすればよいですか?

4

1 に答える 1

7

正直なところ、私はおそらくそうするだろう

>>> 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.]])
于 2013-02-18T16:05:37.487 に答える