(質問への回答をより具体的にするためにEOLが推奨するように編集されました。)
0-dim 配列を作成します (スカラー コンストラクターも見つかりませんでした。)
>>> data0 = np.array(('2011-09-20', 0), dtype=[('start date', 'S11'), ('n', int)])
>>> data0.ndim
0
0-dim 配列の要素にアクセスする
>>> type(data0[()])
<class 'numpy.void'>
>>> data0[()][0]
b'2011-09-20'
>>> data0[()]['start date']
b'2011-09-20'
>>> #There is also an item() method, which however returns the element as python type
>>> type(data0.item())
<class 'tuple'>
構造化配列 (または再配列) をタプルのリストまたは配列と考えるのが最も簡単だと思います。インデックスは、列を選択する名前と行を選択する整数によって機能します。
>>> 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'>)]
ゼロ次元配列、要素はタプル、つまり 1 つのレコード、変更された: スカラー要素ではありません。最後を参照してください
>>> 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)
要素が 1 つの配列
>>> data2 = np.array([tupleli[0]], dtype=dt)
>>> data2.shape
(1,)
>>> data2[0]
(b'2011-09-20', 0)
1次元配列
>>> 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)
EOLの例と同じように、単一のレコードへの直接インデックス付けが機能することを知りませんでした
>>> data3[2][1]
2
>>> data3[2][0]
b'2011-09-22'
>>> data3[2]['n']
2
>>> data3[2]['start date']
b'2011-09-22'
EOLの例を理解しようとしている:スカラー要素と0次元配列は違う
>>> 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
(注: 偶然、開いている python 3.2 インタープリターで例を入力したため、b'...' があります)