exibite777
@exibite777
Ведущий системный аналитик

Почему не работает структурированный массив NumPy?

Почему вот этот кусок кода
tpl=('07f29c2c-9bd2-4999-b69c-a17d15a90700', datetime.datetime(2019, 8, 18, 0, 0), datetime.datetime(2019, 8, 18, 13, 3, 56), 
datetime.timedelta(seconds=31), datetime.datetime(2019, 8, 18, 13, 4, 27), 57)
dt = np.dtype([('v2m_guid', str, 36), ('start_date', 'datetime64[ns]'), ('start_time', 'datetime64[ns]'), ('voice_length', 'timedelta64[ns]'), ('end_time', 'datetime64[ns]'), ('text_length', 'int32')])
arr=np.array(tpl, dtype=dt) 
arr[0]

При выполнении инструкции arr[0] выдает ошибку IndexError: too many indices for array, не смотря на то, что массив создан и менеджер переменных в Spyder видит созданный массив и позволяет его корректировать?

В то время как обучающий пример
In[86]: dt = np.dtype([('name', np.unicode_, 16), ('grades', np.float64, (2,))])
In[87]: x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
Out[87]: 
array([('Sarah', [8., 7.]), ('John', [6., 7.])],
      dtype=[('name', '<U16'), ('grades', '<f8', (2,))])
In[88]: x[1]
Out[88]: ('John', [6., 7.])

вполне себе нормально работает
  • Вопрос задан
  • 497 просмотров
Решения вопроса 1
exibite777
@exibite777 Автор вопроса
Ведущий системный аналитик
ошибка IndexError: too many indices for array сбивает с толку
разница в способе задания массива
arr=np.array([tpl], dtype=dt)
arr=np.array(tpl, dtype=dt)
В первом случае элементы доступны через индекс arr[0]["v2m_guid"]
Во втором случае нет элементов и можно сразу обращаться к полям
arr["v2m_guid"]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы