Допустим, у нас есть одномерный массив numpy или список, который мы используем в качестве входных данных для функции, например fun c (np.array [1.5, 2.5, 3.5]), где эта функция берется из завернутый класс c ++, и наша цель - распечатать значения этого массива или вектора внутри сценария c ++.
Однако я не знаю, как определить функцию C ++ для этого вопроса и указать ее в файле pyx . И хотел спросить, можете ли вы поделиться таким простым фрагментом, как указанная выше функциональность, где низкая задержка имеет наибольшее значение.
В основном, на стороне C ++ я хочу сделать:
void func (/* where I don't what to write */) {
std::cout << array_[0] << std::endl; // which prints 1.5 (since np.array[1.5, 2.5, 3.5][0] was 1.5)
std::cout << array_[1] << std::endl; // which prints 2.5 (since np.array[1.5, 2.5, 3.5][1] was 2.5)
std::cout << array_[2] << std::endl; // which prints 3.5 (since np.array[1.5, 2.5, 3.5][2] was 3.5)
}
Кажется, что memoryviews предлагает возможное решение, которое также имеет низкую задержку, однако, глядя на документацию Cython о memoryviews , я очень запутался.
Пример отсюда упоминает (int * a, int n) как аргумент вышеупомянутой функции, но я не понял, что такое a и n и как я могу индексировать массив на стороне С ++. И, наконец, написание зеркала pyx также для меня непонятно.
Я был бы признателен, если бы кто-нибудь мог дать очень простой пример фрагмента для такой функции C ++ и ее аналога pyx. Также приветствуются любые предложения, отличные от memoryviews, которые не являются медленными:)