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

标签 python numpy ctypes

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

相关文章:

python - 已安装模块时获取 flask 无法导入 flask-mysqldb 错误

python - 如何将 isdigit() 命令设置为变量?

javascript - 如何通过 tastypie 上传文件/图片

python - 为每条记录创建一个删除按钮

python - 使用 NumPy 和 matplotlib 绘制的图形上未显示某些点

linux - os.read 在 inotify 文件描述符 : reading 32 bytes works but 31 raises an exception 上

python - Numpy Memmap Ctypes 访问

python - 基于列值和变量合成一个 numpy 数组/矩阵?

Python 代码 - SVD 与 numpy

python - 我试图用 python ctypes 打开一个用 c 编写的 dll 并运行其中的函数,但它是一个字符,而不是字符串