Как использовать массив NumPy с ctypes?

Я все еще пишу на интерфейсе python для моего кода c ctypes. Сегодня я заменил функцию чтения файлов версией python, которая была запрограммирована кем-то другим, использующим NumPy. «Старая» версия c была вызвана с помощью byref (p_data), а p_data = PFloat () (см. Ниже). Основная функция принимает p_data.

Старое чтение файла:

p_data=POINTER(c_float) foo.read(filename,byref(p_data)) result=foo.pymain(p_data) 

С другой стороны, функция чтения файлов python возвращает массив NumPy. Мой вопрос:

Как преобразовать массив NumPy в POINTER (c_float)?

Я искал googled, но нашел только наоборот: массивы C через ctypes получили доступ к массивам NumPy и вещам, которые я не понял: C-Типы Интерфейс внешних функций (numpy.ctypeslib)

[обновление] исправил ошибку в примере кода

    One Solution collect form web for “Как использовать массив NumPy с ctypes?”

    Ваш код выглядит так, будто в нем есть путаница – ctypes.POINTER() создает новый класс указателей типа ctypes, а не экземпляр ctypes. В любом случае, самый простой способ передать массив NumPy в код ctypes – использовать numpy.ndarray ctypes атрибута data_as . Просто убедитесь, что базовые данные являются правильными. Например:

     c_float_p = ctypes.POINTER(ctypes.c_float) data = numpy.array([[0.1, 0.1], [0.2, 0.2], [0.3, 0.3]]) data = data.astype(numpy.float32) data_p = data.ctypes.data_as(c_float_p) 
     
    Interesting Posts for Van-Lav

    Тег Bokeh CustomType {safe} ничего не отображает

    Отобразите сообщение «загрузка», в то время как в Flask выполняется функция времени

    Правильный способ переопределить метод __dir__ в python

    Интегрирование созданных в командной строке файлов python .coverage с помощью PyDev

    Python: электронная почта get_payload расшифровывается, если вы нажимаете знак равенства?

    Python setup.py call makefile не включает двоичные файлы

    TypeError: требуется целое число

    Использовать подстроку в строке

    Почему загрузка pypi включает \ r \ n в данные запроса POST?

    объединить несколько текстовых файлов в один текстовый файл, используя python

    Назначение поверхностей зонам на основе трехмерных областей, которые они заключают

    Использование heapy для отслеживания утечек памяти в приложении Django

    Извлечение ссылок на страницы в другом PDF из PDF с использованием Python или другого метода

    Matplotlib показывает оси паразита с использованием API OO

    Как запустить функцию на фоне tkinter

    Python - лучший язык программирования в мире.