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