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