ctypes指向自定义dtype的numpy数组

1 投票
1 回答
1012 浏览
提问于 2025-04-16 20:29

我有一个带自定义数据类型的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))

撰写回答