Boost numpy — как мне создать более сложный dtype, такой как datetime или object в C ?

#python #c #pandas #numpy #boost

#питон #c #панды #numpy #boost

Вопрос:

Я использую Boost Numpy для создания некоторых массивов на C и перехода в пространство имен Python. Как правило, я создаю их с помощью этого метода:

 namespace np = boost::python::numpy;
np::empty(shape, np::dtype::get_builtin<int>);
  

Это работает для базовых типов, таких как int, но я не понимаю, как я должен это делать для более сложных типов и обычного типа объекта python.

Например, в python, если я создам фрейм данных pandas следующим образом:

 >>> pandas.DataFrame([datetime.datetime.now()])[0]
0   2020-11-17 20:30:06.132735
Name: 0, dtype: datetime64[ns]
  

что дает мне фрейм данных со столбцом dtype: datetime64[ns].

Кроме того, было бы полезно иметь возможность создавать np::empty с типом «object»:

 >>> pandas.DataFrame([None])[0]
0    None
Name: 0, dtype: object
  

Как мне создать эти типы массивов в Boost Numpy с C ? Документация по Boost очень скудна, и я, похоже, не могу найти никакой информации об этом в Интернете.