通过ctypes从C指针创建numpy数组

3

我已经在一个C库中分配了一块双精度内存,并希望基于该数据创建一个numpy 1D数组;理想情况下,我希望有两个版本,一个只读包装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的函数是否存在?

最好的问候

Joakim Hove

1个回答

2

是的,numpy.ctypeslib.as_array可以用来获取给定的数据类型:as_array(ptr, shape).view(dtype)

理论上这应该可行(暂无时间测试)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接