目标:使用 Cython 从 2D C++ 字符数组获取 Memoryview。
一点背景:
我有一个本机 C++ 库,它生成一些数据并通过 a 返回char**
到 Cython 世界。数组在库中的初始化和操作大约是这样的:
struct Result_buffer{
char** data_pointer;
int length = 0;
Result_buffer( int row_capacity) {
data_pointer; = new char*[row_capacity];
return arr;
}
// the actual data is appended row by row
void append_row(char* row_data) {
data_pointer[length] = row_data;
length++;
}
}
Run Code Online (Sandbox Code Playgroud)
所以我们基本上得到了一个嵌套子数组的数组。
旁注:
- 每行具有相同的列数
- 行可以共享内存,即指向相同的 row_data
目标是最好将此数组与内存视图一起使用,而无需昂贵的内存复制。
使用 Cython 数组和内存视图:
这是应该使用生成的数据的 .pyx 文件
from cython cimport view
cimport numpy as np …
Run Code Online (Sandbox Code Playgroud)