Интерфейс внешних функций ctypes (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>]
Однако существуют платформенно-зависимые соображения, такие как расширения файлов библиотек, плюс тот факт, что Windows загрузит первую библиотеку с таким именем. NumPy предоставляет функцию
load_libraryдля удобства.Изменено в версии 1.20.0: Допускается использование
libnameиloader_pathлюбого типа объекта пути.- Параметры:
-
- libnamepath-like
-
Имя библиотеки, которое может начинаться с 'lib', но без расширения.
- loader_pathpath-like
-
Местоположение библиотеки.
- Возвращает:
-
- ctypes.cdll[libpath]объект библиотеки
-
Объект библиотеки ctypes
- Исключения:
-
- OSError
-
Если библиотеки с ожидаемым расширением нет или библиотека некорректна и не может быть загружена.
- numpy.ctypeslib.ndpointer(dtype=None, ndim=None, shape=None, flags=None) [source]
-
Проверка массивов для restype/argtypes.
Объект
ndpointerиспользуется для описания массива ndarray в спецификацияхrestypeи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
- Возвращает:
-
- 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)) ...
- classnumpy.ctypeslib.c_intp
-
Целочисленный тип
ctypesсо знаком того же размера, что иnumpy.intp.В зависимости от платформы, он может быть псевдонимом для
c_int,c_longилиc_longlong.
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/routines.ctypeslib.html