C型外部功能接口 (numpy.ctypeslib

numpy.ctypeslib.as_array(obj, shape=None)[源代码]

从CTypes数组或指针创建numpy数组。

numpy数组与ctypes对象共享内存。

如果从CTypes指针转换,则必须提供shape参数。如果从CTypes数组转换,则忽略shape参数

numpy.ctypeslib.as_ctypes(obj)[源代码]

从numpy数组创建并返回ctypes对象。实际上,任何暴露 __array_interface__ 被接受。

numpy.ctypeslib.as_ctypes_type(dtype)[源代码]

将数据类型转换为ctypes类型。

参数
dtypeD型

要转换的数据类型

返回
C型

ctype标量、联合、数组或结构

加薪
NotImplementedError

如果无法转换

笔记

此功能不会在任何方向上进行无损往返。

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>] #博士测试:+SKIP

但也有跨平台的考虑,比如库文件扩展名,再加上Windows只会加载它找到的第一个具有该名称的库。NumPy提供了loadu库函数作为一种方便。

参数
libnameSTR

库的名称,可以将“lib”作为前缀,但不带扩展名。

loader_pathSTR

在那里可以找到类库。

返回
ctypes.cdll[libpath]库对象

CTypes库对象

加薪
OSError

如果没有具有预期扩展名的库,或者库有缺陷且无法加载。

numpy.ctypeslib.ndpointer(dtype=None, ndim=None, shape=None, flags=None)[源代码]

数组检查restype/argtype。

ndpointer实例用于在restypes和argtypes规范中描述ndarray。这种方法比使用更灵活,例如, POINTER(c_double) ,因为可以指定多个限制,这些限制在调用ctypes函数时进行验证。这些包括数据类型、维度数、形状和标志。如果给定的数组不满足指定的限制,则 TypeError 提高了。

参数
dtype数据类型,可选

数组数据类型。

ndim可选的

数组维数。

shape整数元组,可选

阵列形状。

flagsstr或str的元组

数组标志;可以是以下一个或多个:

  • 连续的

  • F ou相邻/F/Fortran

  • OWNDATA/O

  • 可写的

  • 对齐/ A

  • 写回ifcopy/x

  • 更新ifcopy/u

返回
klassndpointer类型对象

类型对象,它是 _ndtpr 包含数据类型、ndim、形状和标志信息的实例。

加薪
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))
...