python - 从通过 ctypes 获取的 C-ptr 创建 numpy 数组

标签 python numpy ctypes

我在 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/

相关文章:

python - scikit 中的 SVC 与 LinearSVC 学习 : difference of loss function

python - celery 任务和 django 查询集缓存

python - 查找列的最大值,并在另一列中返回值

python - 处理线性回归中的 NaN——scipy?

python - 在numpy中用3d数组索引2d数组

pandas - 根据另一个数据框中的日期条件创建新列

python - 将调用 C 函数的 Python 2.7 代码移植到 Python 3.4

python pandas 无法显示大数据框的摘要

virtualenv 中的 Python ctypes 导入错误

python - 相当于python ctypes的C dll