<p>(根据EOL的建议进行编辑,以便在回答问题时更加具体。)</p>
<p>创建0维数组(我也没有找到标量构造函数。)</p>
<pre><code>>>> data0 = np.array(('2011-09-20', 0), dtype=[('start date', 'S11'), ('n', int)])
>>> data0.ndim
0
</code></pre>
<p>0维数组中的访问元素</p>
^{pr2}$
<hr/>
<p>我认为最简单的方法是将结构化数组(或recarray)看作元组的列表或数组,而索引是根据选择列的名称和选择行的整数进行的。在</p>
<pre><code>>>> tupleli = [('2011-09-2%s' % i, i) for i in range(5)]
>>> tupleli
[('2011-09-20', 0), ('2011-09-21', 1), ('2011-09-22', 2), ('2011-09-23', 3), ('2011-09-24', 4)]
>>> dt = dtype=[('start date', '|S11'), ('n', np.int64)]
>>> dt
[('start date', '|S11'), ('n', <class 'numpy.int64'>)]
</code></pre>
<p>零维数组,元素是元组,即一条记录,<strong>已更改</strong>:不是标量元素,请参见末尾</p>
<pre><code>>>> data1 = np.array(tupleli[0], dtype=dt)
>>> data1.shape
()
>>> data1['start date']
array(b'2011-09-20',
dtype='|S11')
>>> data1['n']
array(0, dtype=int64)
</code></pre>
<p>有一个元素的数组</p>
<pre><code>>>> data2 = np.array([tupleli[0]], dtype=dt)
>>> data2.shape
(1,)
>>> data2[0]
(b'2011-09-20', 0)
</code></pre>
<p>一维阵列</p>
<pre><code>>>> data3 = np.array(tupleli, dtype=dt)
>>> data3.shape
(5,)
>>> data3[2]
(b'2011-09-22', 2)
>>> data3['start date']
array([b'2011-09-20', b'2011-09-21', b'2011-09-22', b'2011-09-23',
b'2011-09-24'],
dtype='|S11')
>>> data3['n']
array([0, 1, 2, 3, 4], dtype=int64)
</code></pre>
<p>直接索引到单个记录中,与EOL的示例中相同,我不知道它是否有效</p>
<pre><code>>>> data3[2][1]
2
>>> data3[2][0]
b'2011-09-22'
>>> data3[2]['n']
2
>>> data3[2]['start date']
b'2011-09-22'
</code></pre>
<p>试图理解EOL的例子:标量元素和零维数组是不同的</p>
<pre><code>>>> type(data1)
<class 'numpy.ndarray'>
>>> type(data1[()]) #get element out of 0-dim array
<class 'numpy.void'>
>>> data1[0]
Traceback (most recent call last):
File "<pyshell#98>", line 1, in <module>
data1[0]
IndexError: 0-d arrays can't be indexed
>>> data1[()][0]
b'2011-09-20'
>>> data1.ndim
0
>>> data1[()].ndim
0
</code></pre>
<p>(注意:我无意中在一个开放的python3.2解释器中输入了这个示例,因此有一个b'…')</p>