我有一个带有自定义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例程不知道通过数组的正确步幅是什么。
您是否有任何建议,可能没有复制数组?
答案 0 :(得分:1)
您必须将数据复制到连续的数组中。
one = np.ascontiguousarray(a['one'])
one.ctypes.data_as(ctypes.POINTER(ctypes.c_double))