numpy.ctypeslib
numpy.ctypeslib.
as_array
从CTypes数组或指针创建numpy数组。
numpy数组与ctypes对象共享内存。
如果从CTypes指针转换,则必须提供shape参数。如果从CTypes数组转换,则忽略shape参数
as_ctypes
从numpy数组创建并返回ctypes对象。实际上,任何暴露 __array_interface__ 被接受。
as_ctypes_type
将数据类型转换为ctypes类型。
要转换的数据类型
ctype标量、联合、数组或结构
如果无法转换
笔记
此功能不会在任何方向上进行无损往返。
np.dtype(as_ctypes_type(dt)) 威尔:
np.dtype(as_ctypes_type(dt))
插入填充字段 按偏移量对字段重新排序 放弃字段标题
插入填充字段
按偏移量对字段重新排序
放弃字段标题
as_ctypes_type(np.dtype(ctype)) 威尔:
as_ctypes_type(np.dtype(ctype))
丢弃的类名 ctypes.Structure S和 ctypes.Union S 转换单个元素 ctypes.Union 转换为单个元素 ctypes.Structure S 插入填充字段
丢弃的类名 ctypes.Structure S和 ctypes.Union S
ctypes.Structure
ctypes.Union
转换单个元素 ctypes.Union 转换为单个元素 ctypes.Structure S
load_library
可以使用>>>lib=ctypes.cdll文件 [<full_path_name>] #博士测试:+SKIP
但也有跨平台的考虑,比如库文件扩展名,再加上Windows只会加载它找到的第一个具有该名称的库。NumPy提供了loadu库函数作为一种方便。
库的名称,可以将“lib”作为前缀,但不带扩展名。
在那里可以找到类库。
CTypes库对象
如果没有具有预期扩展名的库,或者库有缺陷且无法加载。
ndpointer
数组检查restype/argtype。
ndpointer实例用于在restypes和argtypes规范中描述ndarray。这种方法比使用更灵活,例如, POINTER(c_double) ,因为可以指定多个限制,这些限制在调用ctypes函数时进行验证。这些包括数据类型、维度数、形状和标志。如果给定的数组不满足指定的限制,则 TypeError 提高了。
POINTER(c_double)
TypeError
数组数据类型。
数组维数。
阵列形状。
数组标志;可以是以下一个或多个:
连续的 F ou相邻/F/Fortran OWNDATA/O 可写的 对齐/ A 写回ifcopy/x 更新ifcopy/u
连续的
F ou相邻/F/Fortran
OWNDATA/O
可写的
对齐/ A
写回ifcopy/x
更新ifcopy/u
类型对象,它是 _ndtpr 包含数据类型、ndim、形状和标志信息的实例。
_ndtpr
如果给定的数组不满足指定的限制。
实例
>>> clib.somefunc.argtypes = [np.ctypeslib.ndpointer(dtype=np.float64, ... ndim=1, ... flags='C_CONTIGUOUS')] ... >>> clib.somefunc(np.array([1, 2, 3], dtype=np.float64)) ...