<p>您可以使用<code>np.array(list(result.items()), dtype=dtype)</code>:</p>
<pre><code>import numpy as np
result = {0: 1.1181753789488595, 1: 0.5566080288678394, 2: 0.4718269778030734, 3: 0.48716683119447185, 4: 1.0, 5: 0.1395076201641266, 6: 0.20941558441558442}
names = ['id','data']
formats = ['f8','f8']
dtype = dict(names = names, formats=formats)
array = np.array(list(result.items()), dtype=dtype)
print(repr(array))
</code></pre>
<p>收益率</p>
<pre><code>array([(0.0, 1.1181753789488595), (1.0, 0.5566080288678394),
(2.0, 0.4718269778030734), (3.0, 0.48716683119447185), (4.0, 1.0),
(5.0, 0.1395076201641266), (6.0, 0.20941558441558442)],
dtype=[('id', '<f8'), ('data', '<f8')])
</code></pre>
<hr/>
<p>如果不想创建元组的中间列表<code>list(result.items())</code>,则可以使用<code>np.fromiter</code>:</p>
<p>在Python2中:</p>
<pre><code>array = np.fromiter(result.iteritems(), dtype=dtype, count=len(result))
</code></pre>
<p>在Python3中:</p>
<pre><code>array = np.fromiter(result.items(), dtype=dtype, count=len(result))
</code></pre>
<hr/>
<p><strong>为什么使用列表{<cd4>}不起作用:</strong></p>
<p>顺便说一下,你的尝试</p>
<pre><code>numpy.array([[key,val] for (key,val) in result.iteritems()],dtype)
</code></pre>
<p>离工作很近。如果将列表<code>[key, val]</code>更改为元组<code>(key, val)</code>,那么它就可以工作了。当然了</p>
<pre><code>numpy.array([(key,val) for (key,val) in result.iteritems()], dtype)
</code></pre>
<p>是同一件事</p>
<pre><code>numpy.array(result.items(), dtype)
</code></pre>
<p>在Python2中,或者</p>
<pre><code>numpy.array(list(result.items()), dtype)
</code></pre>
<p>在Python3。</p>
<hr/>
<p><code>np.array</code>对待列表的方式不同于元组:<a href="http://mail.scipy.org/pipermail/numpy-discussion/2011-September/058390.html" rel="noreferrer">Robert Kern explains</a>:</p>
<blockquote>
<p>As a rule, tuples are considered "scalar" records and lists are
recursed upon. This rule helps numpy.array() figure out which
sequences are records and which are other sequences to be recursed
upon; i.e. which sequences create another dimension and which are the
atomic elements.</p>
</blockquote>
<p>因为<code>(0.0, 1.1181753789488595)</code>被认为是这些原子元素之一,所以它应该是元组,而不是列表。</p>