ctypes指向自定义dtype的numpy数组
我有一个带自定义数据类型的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
我想创建一个ctypes指针,这样我就可以把它传递给一个C语言库。问题是,这个C语言库只需要一个指向双精度数组的指针,也就是'one'字段。
我试过用:
a['one'].ctypes.data_as(ctypes.POINTER(ctypes.c_double))
但这不管用,我觉得是因为C语言的函数不知道如何正确地遍历这个数组。
你有什么建议吗?最好是不要复制这个数组。
1 个回答
1
你需要把数据复制到一个连续的数组里。
one = np.ascontiguousarray(a['one'])
one.ctypes.data_as(ctypes.POINTER(ctypes.c_double))