ctypes指向具有自定义dtype的numpy数组

时间:2011-06-29 01:27:35

标签: python numpy ctypes

我有一个带有自定义dtype的numpy数组:

a = np.zeros(100, dtype=np.dtype([('one',np.double),('two',np.int)]))
a['one']=np.arange(100)
a['two']=np.arange(100)*-1

我想创建一个可以传递给C库的ctypes指针。 问题是C库只需要一个指向双数组的指针,即'one'字段。

我尝试过:     一个[ '一个']。ctypes.data_as(ctypes.POINTER(ctypes.c_double))

但它不起作用,我相信因为C例程不知道通过数组的正确步幅是什么。

您是否有任何建议,可能没有复制数组?

1 个答案:

答案 0 :(得分:1)

您必须将数据复制到连续的数组中。

one = np.ascontiguousarray(a['one'])
one.ctypes.data_as(ctypes.POINTER(ctypes.c_double))