numpy.ndarray.ctypes

原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.ctypes.html

译者:飞龙 UsyiyiCN

校对:(虚位以待)

ndarray.ctypes

一个对象,用于简化数组与ctypes模块的交互。

此属性创建一个对象,使得在使用ctypes模块调用共享库时更容易使用数组。返回的对象包括数据,形状和步长属性(见下面的注释),它们本身返回可以用作共享库的参数的ctypes对象。

参数:

返回:

c:Python对象

拥有属性数据,形状,步幅等

也可以看看

numpy.ctypeslib

笔记

下面是这个对象的公共属性,它们被记录在“NumPy指南”中(我们省略了未记录的公共属性,以及记录的私有属性):

小心使用ctypes属性 - 特别是临时构建的数组或数组。例如,调用(a+b).ctypes.data_as(ctypes.c_void_p)会返回一个无效的指针,因为创建为(a + b)的数组在下一个Python语句之前被释放。你可以使用c=a+bct=(a+b).ctypes避免此问题。在后一种情况下,ct将保存对数组的引用,直到ct被删除或重新分配。

如果ctypes模块不可用,那么数组对象的ctypes属性仍会返回有用的信息,但不会返回ctypes对象,而是可能会出现错误。特别地,对象仍然具有as参数属性,该属性将返回等于data属性的整数。

例子

>>> import ctypes
>>> x
array([[0, 1],
       [2, 3]])
>>> x.ctypes.data
30439712
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_long))
<ctypes.LP_c_long object at 0x01F01300>
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_long)).contents
c_long(0)
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_longlong)).contents
c_longlong(4294967296L)
>>> x.ctypes.shape
<numpy.core._internal.c_long_Array_2 object at 0x01FFD580>
>>> x.ctypes.shape_as(ctypes.c_long)
<numpy.core._internal.c_long_Array_2 object at 0x01FCE620>
>>> x.ctypes.strides
<numpy.core._internal.c_long_Array_2 object at 0x01FCE620>
>>> x.ctypes.strides_as(ctypes.c_longlong)
<numpy.core._internal.c_longlong_Array_2 object at 0x01F01300>