(отредактировано как 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'>)]
массив нулевого измерения, элемент кортеж, т. Е. Одна запись, изменено : не является скалярным элементом, см. В конце
>>> 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)
массив с одним элементом
>>> data2 = np.array([tupleli[0]], dtype=dt)
>>> data2.shape
(1,)
>>> data2[0]
(b'2011-09-20', 0)
1d массив
>>> 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: скалярный элемент и нульмерный массив различаются
>>> 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 '...')