Я играю с xtensor, так что я могу использовать его из Python.Тем не менее, одна из привлекательных сторон xtensor заключается в том, что также легко создавать привязки для R, поэтому напишите алгоритм один раз, затем напишите привязки для python и привязки для R, и все готово.
У меня естьначал с python, и я получил свой код для правильной работы, когда я установил тип аргумента xt :: pyarray.
void func(const xt::pyarray<float> x) { ... }
...
m.def("func", &func);
Однако я подозреваю, что xt :: pyarray не будет подходящим, еслиЯ пытаюсь сделать R привязки.Кроме того, xt :: pyarray, вероятно, является типом xt :: xarray.Я помню, как читал где-то, что xt :: xtensor может быть лучше оптимизирован, так как количество измерений известно заранее.Итак, xt :: xtensor - путь.
void func(const xt::xtensor<float, 2> x) { ... }
...
m.def("func", &func);
Так что я делаю это изменение, и это здорово - оно все еще работает.Но сейчас, я не знаю, как это назвать от NumPy.Если я называю это так, как раньше, используя np.ndarrays, это больше не работает и информирует меня о том, что типы не совпадают.Я также пытался преобразовать np.ndarrays с np.asmatrix(x, dtype=np.float32)
, но это также не работает.
Как мне вызвать эту функцию из numpy, чтобы заставить это работать?