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))将要:

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