通过ctypes从C-ptr创建numpy数组

时间:2011-07-01 09:07:23

标签: python numpy ctypes

我在C库中分配了一大块double,我想基于该数据创建一个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 个答案:

答案 0 :(得分:2)

是的,numpy.ctypeslib.as_array 获取给定的dtype as_array(ptr, shape).view(dtype)

这应该有效,至少在理论上是这样(现在没时间进行测试)。