Можно ли создать объект NumPy, который ведет себя так же, как collection.namedtuple, в том смысле, что к элементам можно обращаться так:
data[1] = 42
data['start date'] = '2011-09-20' # Slight generalization of what is possible with a namedtuple
Я попытался использовать сложный тип данных:
>>> data = numpy.empty(shape=tuple(), dtype=[('start date', 'S11'), ('n', int)])
Это создает 0-мерное значение с типом namedtuple; он почти работает:
>>> data['start date'] = '2011-09-20'
>>> data
array(('2011-09-20', -3241474627884561860),
dtype=[('start date', '|S11'), ('n', '<i8')])
Однако доступ к элементу не работает, потому что "массив" является 0-мерным:
>>> data[0] = '2011-09-20'
Traceback (most recent call last):
File "<ipython-input-19-ed41131430b9>", line 1, in <module>
data[0] = '2011-09-20'
IndexError: 0-d arrays can't be indexed.
Есть ли способ получить желаемое поведение, описанное выше (назначение элемента как с строкой, так и с индексом) с объектом NumPy?