擅长:python、mysql、java
<p>您可以尝试使用<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flat.html#numpy.ndarray.flat" rel="noreferrer">numpy.ndarray.flat</a>,它表示一个迭代器,可以用来读写数组。在</p>
<pre><code>>>> M = zeros((4,4))
>>> M.flat[::5] = 1
>>> print(M)
array([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
</code></pre>
<p>注意,在numpy中,切片语法是[开始:停止独占:step],与Matlab相反(开始:步骤:停止(包括在内)。在</p>
<p>基于sebergs的评论,有必要指出Matlab将矩阵存储在列major中,而numpy数组默认是row major。在</p>
^{pr2}$
<p>要在展平数组上获得类似Matlab的索引,需要展平转置数组:</p>
<pre><code>>>> M = zeros((4,4))
>>> M.T.flat[:4] = 1
>>> print(M)
array([[ 1., 0., 0., 0.],
[ 1., 0., 0., 0.],
[ 1., 0., 0., 0.],
[ 1., 0., 0., 0.]])
</code></pre>