Spec-Zone.ru › NumPy 1.21

C-типовой интерфейс внешних функций (numpy.ctypeslib)

numpy.ctypeslib.as_array(obj, shape=None)[source]

Создать массив NumPy из массива или указателя ctypes.

Массив NumPy разделяет память с объектом ctypes.

Параметр shape должен быть задан при преобразовании из указателя ctypes. Параметр shape игнорируется при преобразовании из массива ctypes.

numpy.ctypeslib.as_ctypes(obj)[source]

Создать и вернуть объект ctypes из массива NumPy. Фактически принимается всё, что предоставляет __array_interface__.

numpy.ctypeslib.as_ctypes_type(dtype)[source]

Преобразовать тип dtype в тип ctypes.

Параметры
dtypedtype

Преобразуемый тип dtype

Возвращает
ctype

Скаляр, объединение, массив или структура ctypes

Возбуждает
NotImplementedError

Если преобразование невозможно

Примечания

Эта функция не обеспечивает обратного преобразования без потерь ни в одном направлении.

np.dtype(as_ctypes_type(dt)) будет:

  • вставлять поля заполнения
  • переупорядочивать поля для сортировки по смещению
  • удалять заголовки полей

as_ctypes_type(np.dtype(ctype)) будет:

  • удалять имена классов ctypes.Structure и ctypes.Union
  • преобразовывать ctypes.Union с одним элементом в ctypes.Structure с одним элементом
  • вставлять поля заполнения
numpy.ctypeslib.load_library(libname, loader_path)[source]

Библиотеку можно загрузить с помощью >>> lib = ctypes.cdll[<полный_путь_к_файлу>] # doctest: +SKIP

Однако есть платформенные соображения, такие как расширения файлов библиотек, плюс тот факт, что Windows просто загрузит первую библиотеку с этим именем. NumPy предоставляет функцию load_library для удобства.

Параметры
libnamestr

Имя библиотеки, которое может иметь префикс «lib», но без расширения.

loader_pathstr

Местоположение библиотеки.

Возвращает
ctypes.cdll[libpath]объект библиотеки

Объект библиотеки ctypes

Возбуждает
OSError

Если библиотека с ожидаемым расширением отсутствует или библиотека имеет дефект и не может быть загружена.

numpy.ctypeslib.ndpointer(dtype=None, ndim=None, shape=None, flags=None)[source]

Проверка массивов в restype/argtypes.

Экземпляр ndpointer используется для описания ndarray в спецификациях restypes и argtypes. Этот подход более гибкий, чем использование, например, POINTER(c_double), так как можно указать несколько ограничений, которые проверяются при вызове функции ctypes. К ним относятся тип данных, количество измерений, форма и флаги. Если заданный массив не удовлетворяет указанным ограничениям, возникает TypeError.

Параметры
dtypeтип данных, необязательно

Тип данных массива.

ndimint, необязательно

Количество измерений массива.

shapeкортеж целых чисел, необязательно

Форма массива.

flagsстрока или кортеж строк

Флаги массива; может быть один или несколько из следующих:

  • C_CONTIGUOUS / C / CONTIGUOUS
  • F_CONTIGUOUS / F / FORTRAN
  • OWNDATA / O
  • WRITEABLE / W
  • ALIGNED / A
  • WRITEBACKIFCOPY / X
  • UPDATEIFCOPY / U
Возвращает
klassтип объекта ndpointer

Объект типа, который является экземпляром _ndtpr, содержащим информацию о dtype, ndim, shape и flags.

Возбуждает
TypeError

Если заданный массив не удовлетворяет указанным ограничениям.

Примеры

>>> clib.somefunc.argtypes = [np.ctypeslib.ndpointer(dtype=np.float64,
...                                                  ndim=1,
...                                                  flags='C_CONTIGUOUS')]
... 
>>> clib.somefunc(np.array([1, 2, 3], dtype=np.float64))
... 

© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/routines.ctypeslib.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API