我在 C 库中分配了一个 double block ,我想基于该数据创建一个 numpy 一维数组;理想情况下,我想要两个版本,一个只包装 c_ptr 只读 - 让 C 层保留数据的所有权,另一个复制数据。如此简化的代码将是这样的:
C 代码
double * init_and_alloc( size_t size ) {
double * ptr = malloc( size * sizeof * ptr );
// initialize ptr
return ptr;
}
Python代码
size = 1000
c_ptr = ctypes_func_ptr_init_and_alloc( size )
numpy_array = numpy.xxxx( c_ptr , size , dtype.float64) <--- ?????
那么我标记为xxxx的函数存在吗?
最好的问候
乔金霍夫
最佳答案
是的,numpy.ctypeslib.as_array
要获取给定的数据类型,as_array(ptr, shape).view(dtype)
。
至少在理论上应该可行(现在没有时间测试)。
关于python - 从通过 ctypes 获取的 C-ptr 创建 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6545824/