我想转换(更复杂的形式)的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