numpy.ctypeslib
numpy.ctypeslib.
as_array
Create a numpy array from a ctypes array or POINTER.
The numpy array shares the memory with the ctypes object.
The shape parameter must be given if converting from a ctypes POINTER. The shape parameter is ignored if converting from a ctypes array
as_ctypes
Create and return a ctypes object from a numpy array. Actually anything that exposes the __array_interface__ is accepted.
as_ctypes_type
Convert a dtype into a ctypes type.
The dtype to convert
A ctype scalar, union, array, or struct
If the conversion is not possible
Notes
This function does not losslessly round-trip in either direction.
np.dtype(as_ctypes_type(dt)) will:
np.dtype(as_ctypes_type(dt))
insert padding fields reorder fields to be sorted by offset discard field titles
insert padding fields
reorder fields to be sorted by offset
discard field titles
as_ctypes_type(np.dtype(ctype)) will:
as_ctypes_type(np.dtype(ctype))
discard the class names of ctypes.Structures and ctypes.Unions convert single-element ctypes.Unions into single-element ctypes.Structures insert padding fields
discard the class names of ctypes.Structures and ctypes.Unions
ctypes.Structure
ctypes.Union
convert single-element ctypes.Unions into single-element ctypes.Structures
load_library
It is possible to load a library using >>> lib = ctypes.cdll[<full_path_name>] # doctest: +SKIP
But there are cross-platform considerations, such as library file extensions, plus the fact Windows will just load the first library it finds with that name. NumPy supplies the load_library function as a convenience.
Name of the library, which can have ‘lib’ as a prefix, but without an extension.
Where the library can be found.
A ctypes library object
If there is no library with the expected extension, or the library is defective and cannot be loaded.
ndpointer
Array-checking restype/argtypes.
An ndpointer instance is used to describe an ndarray in restypes and argtypes specifications. This approach is more flexible than using, for example, POINTER(c_double), since several restrictions can be specified, which are verified upon calling the ctypes function. These include data type, number of dimensions, shape and flags. If a given array does not satisfy the specified restrictions, a TypeError is raised.
POINTER(c_double)
TypeError
Array data-type.
Number of array dimensions.
Array shape.
Array flags; may be one or more of:
C_CONTIGUOUS / C / CONTIGUOUS F_CONTIGUOUS / F / FORTRAN OWNDATA / O WRITEABLE / W ALIGNED / A WRITEBACKIFCOPY / X UPDATEIFCOPY / U
C_CONTIGUOUS / C / CONTIGUOUS
F_CONTIGUOUS / F / FORTRAN
OWNDATA / O
WRITEABLE / W
ALIGNED / A
WRITEBACKIFCOPY / X
UPDATEIFCOPY / U
A type object, which is an _ndtpr instance containing dtype, ndim, shape and flags information.
_ndtpr
If a given array does not satisfy the specified restrictions.
Examples
>>> clib.somefunc.argtypes = [np.ctypeslib.ndpointer(dtype=np.float64, ... ndim=1, ... flags='C_CONTIGUOUS')] ... >>> clib.somefunc(np.array([1, 2, 3], dtype=np.float64)) ...