我想轉換(更復雜的形式)的follwing Matlab代碼轉換MATLAB風格索引,以numpy的
a=zeros(9,9);
a(3+(1:3),6+(1:3))=1;
到NumPy的。我試過
from numpy import zeros, r_
a=zeros((9,9))
a[3+r_[0:3],6+r_[0:3]] = 1
但是這隻能把3 1放在矩陣中。我如何在Python中以類似(簡短)的形式編寫matlab代碼?
我想轉換(更復雜的形式)的follwing Matlab代碼轉換MATLAB風格索引,以numpy的
a=zeros(9,9);
a(3+(1:3),6+(1:3))=1;
到NumPy的。我試過
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.]])
在你沒有看到它的情況:http://www.scipy.org/NumPy_for_Matlab_Users。標題爲「線性代數等價」的部分可能特別有用。 – mtrw 2013-02-18 17:07:56