擅长:python、mysql、java
<p>您可以通过填充、重塑形状和计算每行要划分多少元素来轻松实现这一点:</p>
<pre><code>>>> import numpy as np
>>> a = np.array([2,2,3,2,2,3,2,2,3,6])
>>> k = 3
</code></pre>
<p>Pad数据</p>
^{pr2}$
<p>然后创建一个遮罩:</p>
<pre><code>>>> c = a.size // k # 3
>>> d = (np.arange(k) + c * k) < a.size # [True, False, False]
</code></pre>
<p><code>d</code>的第一部分将创建一个包含<code>[9, 10, 11]</code>的数组,并将其与<code>a</code>(10)的大小进行比较,生成所提到的布尔掩码。在</p>
<p>把它分开:</p>
<pre><code>>>> b.sum(0) / (c + 1.0 * d)
array([ 3., 2., 3.])
</code></pre>
<p>上面的方法将第一列除以4(<code>c + 1 * True</code>),其余的除以3。这是矢量化的numpy,因此,它可以很好地扩展到大型阵列。在</p>
<p>所有的东西都可以写得更短,我只是展示所有的步骤,让它更清楚。在</p>