擅长:python、mysql、java
<p><code>Dicakar's</code>结构化数组形式的答案转换:</p>
<pre><code>In [500]: x=np.array([(25, 1), (37, 3), (37, 2), (47, 1), (59, 2)], dtype=[('recod', '<u8'), ('count', '<u4')])
</code></pre>
<p>查找唯一值并计数:</p>
^{pr2}$
<p>创建一个新的结构化数组并填充字段:</p>
<pre><code>In [503]: x1 = np.empty(unqA.shape, dtype=x.dtype)
In [504]: x1['recod'] = unqA
In [505]: x1['count'] = cnt
In [506]: x1
Out[506]:
array([(25, 1), (37, 5), (47, 1), (59, 2)],
dtype=[('recod', '<u8'), ('count', '<u4')])
</code></pre>
<p>有一个<code>recarray</code>函数,它从数组列表生成数组:</p>
<pre><code>In [507]: np.rec.fromarrays([unqA,cnt],dtype=x.dtype)
Out[507]:
rec.array([(25, 1), (37, 5), (47, 1), (59, 2)],
dtype=[('recod', '<u8'), ('count', '<u4')])
</code></pre>
<p>在内部它也做同样的事情-构建一个大小和数据类型正确的空数组,然后在dtype字段上循环。重排只是特殊数组子类包装器中的结构化数组。在</p>
<p>有两种方法可以填充结构化数组(尤其是使用不同的数据类型)-使用元组列表填充,就像使用<code>x</code>填充一样,还有逐字段填充。在</p>