我有一个带有自定义数据类型的 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 库只需要一个指向 double 组的指针,即“one”字段。
我尝试过: a['one'].ctypes.data_as(ctypes.POINTER(ctypes.c_double))
但它不起作用,我相信是因为 C 例程不知道通过数组的正确步幅是什么。
您有什么建议吗?可能不需要复制数组吗?
最佳答案
您必须将数据复制到连续的数组中。
one = np.ascontiguousarray(a['one'])
one.ctypes.data_as(ctypes.POINTER(ctypes.c_double))
关于python - ctypes 指向具有自定义 dtype 的 numpy 数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6514856/