Я расширяю код python с помощью функций c ++, работающих с массивами Numpy (очень большой). Из-за устаревшей версии у меня в настоящее время есть функции API PyBind и Python, как для Python 3.6, так и выше. Как только я получу доступ к памяти через ptr, я бы хотел быть уверенным, что макет памяти точно соответствует массиву c ++ под этим ptr. Я обнаружил, что в обоих случаях транспонированный массив имеет одинаковое содержимое в ptr. Я также обнаружил, что подмассивы, отправляемые через Python API, дают в c ++ точно такой же ptr, как если бы это был полный массив. В ходе разработки и тестирования я также наблюдал более странные примеры, которые, я считаю, но больше не могу их воспроизводить. Я не могу найти никаких рецептов на inte rnet до сих пор. Мое решение состоит в том, чтобы сделать копию всех входных массивов в Python, например, f (a.copy (), b.copy ())
Кажется, это работает хорошо. Это оптимальное / достаточное решение? У меня нет никаких ограничений на то, как были созданы входные массивы. Транспонировать, подмассировать, изменять форму, в любых сочетаниях.