C 类型外部函数接口 ( numpy.ctypeslib
) #
- numpy.ctypeslib。as_array ( obj , shape = None ) [来源] #
从 ctypes 数组或 POINTER 创建 numpy 数组。
numpy 数组与 ctypes 对象共享内存。
如果从 ctypes POINTER 转换,则必须给出形状参数。如果从 ctypes 数组转换,则忽略形状参数
- numpy.ctypeslib。as_ctypes ( obj ) [来源] #
从 numpy 数组创建并返回 ctypes 对象。实际上,任何暴露 __array_interface__ 的东西都是被接受的。
- numpy.ctypeslib。as_ctypes_type ( dtype ) [来源] #
将 dtype 转换为 ctypes 类型。
- 参数:
- 数据类型数据类型
要转换的数据类型
- 返回:
- 类型
ctype 标量、联合、数组或结构
- 加薪:
- 未实现错误
如果无法转换
笔记
此函数不会在任一方向上无损往返。
np.dtype(as_ctypes_type(dt))
将要:插入填充字段
重新排序要按偏移量排序的字段
丢弃字段标题
as_ctypes_type(np.dtype(ctype))
将要:ctypes.Structure
丢弃s 和ctypes.Union
s的类名将单元素转换
ctypes.Union
为单ctypes.Structure
元素插入填充字段
- numpy.ctypeslib。load_library ( libname , loader_path ) [来源] #
可以使用加载库
>>> lib = ctypes.cdll[<full_path_name>]
但还存在跨平台的考虑因素,例如库文件扩展名,而且 Windows 将仅加载它找到的第一个具有该名称的库。为了方便起见,NumPy 提供了 load_library 函数。
版本 1.20.0 中更改:允许 libname 和 loader_path 获取任何 类似路径的对象。
- 参数:
- libname类路径
库的名称,可以以“lib”作为前缀,但没有扩展名。
- loader_path类路径
哪里可以找到图书馆。
- 返回:
- ctypes.cdll[libpath]库对象
ctypes 库对象
- 加薪:
- 操作系统错误
如果没有具有预期扩展名的库,或者库有缺陷并且无法加载。
- numpy.ctypeslib。ndpointer ( dtype = None , ndim = None , shape = None , flags = None ) [来源] #
数组检查 restype/argtypes。
ndpointer 实例用于在 restypes 和 argtypes 规范中描述 ndarray。这种方法比使用例如 更灵活,
POINTER(c_double)
因为可以指定多个限制,这些限制在调用 ctypes 函数时进行验证。其中包括数据类型、维数、形状和标志。如果给定数组不满足指定的限制,TypeError
则会引发 a。- 参数:
- dtype数据类型,可选
数组数据类型。
- ndim整数,可选
数组维数。
- 整数形状元组,可选
阵列形状。
- 标志str 或 str 的元组
数组标志;可能是以下一项或多项:
C_CONTIGUOUS / C / 连续
F_CONTIGUOUS/F/FORTRAN
自己的数据/O
可写/W
对齐/A
回写IFCOPY / X
- 返回:
- klass ndpointer类型对象
类型对象,它是
_ndtpr
包含 dtype、ndim、shape 和 flags 信息的实例。
- 加薪:
- 类型错误
如果给定的数组不满足指定的限制。
例子
>>> clib.somefunc.argtypes = [np.ctypeslib.ndpointer(dtype=np.float64, ... ndim=1, ... flags='C_CONTIGUOUS')] ... >>> clib.somefunc(np.array([1, 2, 3], dtype=np.float64)) ...
- numpy.ctypeslib类 。c_intp #
ctypes
大小与 相同的有符号整数类型numpy.intp
。c_int
根据平台的不同,它可以是,c_long
或 的别名c_longlong
。