C-Types Foreign Function Interface (numpy.ctypeslib)

原文:https://docs.scipy.org/doc/numpy/reference/routines.ctypeslib.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

numpy.ctypeslib.as_array(obj, shape=None)[source]

从ctypes数组或ctypes POINTER创建numpy数组。numpy数组与ctypes对象共享内存。

如果从ctypes POINTER转换,则必须提供size参数。如果从ctypes数组转换,size参数将被忽略

numpy.ctypeslib.as_ctypes(obj)[source]

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

numpy.ctypeslib.ctypes_load_library(*args, **kwds)[source]

ctypes_load_library已弃用,请改用load_library

可以使用>>> lib = ctypes.cdll []加载库

但有跨平台的考虑,如库文件扩展,加上事实上,Windows将加载它找到的第一个库名称。Numpy提供了load_library函数作为方便。

参数:

libname:str

库的名称,它可以有'lib'作为前缀,但没有扩展名。

loader_path:str

在哪里可以找到库。

返回:

ctypes.cdll [libpath]:库对象

一个ctypes库对象

上升:

OSError

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

numpy.ctypeslib.load_library(libname, loader_path)[source]

可以使用>>> lib = ctypes.cdll []加载库

但有跨平台的考虑,如库文件扩展,加上事实上,Windows将加载它找到的第一个库名称。Numpy提供了load_library函数作为方便。

参数:

libname:str

库的名称,它可以有'lib'作为前缀,但没有扩展名。

loader_path:str

在哪里可以找到库。

返回:

ctypes.cdll [libpath]:库对象

一个ctypes库对象

上升:

OSError

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

numpy.ctypeslib.ndpointer(dtype=None, ndim=None, shape=None, flags=None)[source]

数组检查restype / argtypes。

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

参数:

dtype:数据类型,可选

数组数据类型。

ndim:int,可选

数组尺寸数。

shape:ints的tuple,可选

数组形状。

标志:str或str的元组

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

  • C_CONTIGUOUS / C / CONTIGUOUS
  • F_CONTIGUOUS / F / FORTRAN
  • OWNDATA / O
  • WRITEABLE / W
  • 对齐/ A
  • UPDATEIFCOPY / U
返回:

klass:ndpointer类型对象

类型对象,它是一个包含dtype,ndim,shape和flags信息的_ndtpr实例。

上升:

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