Spec-Zone.ru › NumPy 1.20

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[<full_path_name>] # doctest: +SKIP

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

Параметры
libnamestr

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

loader_pathstr

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

Возвращает
ctypes.cdll[libpath]library object

Объект библиотеки 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.

Параметры
dtypedata-type, optional

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

ndimint, optional

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

shapetuple of ints, optional

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

flagsstr or tuple of str

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

  • C_CONTIGUOUS / C / CONTIGUOUS
  • F_CONTIGUOUS / F / FORTRAN
  • OWNDATA / O
  • WRITEABLE / W
  • ALIGNED / A
  • WRITEBACKIFCOPY / X
  • UPDATEIFCOPY / U
Возвращает
klassndpointer type object

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

Возбуждает исключение
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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/routines.ctypeslib.html

Spec-Zone.ru

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