相关疑难解决方法(0)

如何使用带有ctypes的NumPy数组?

我仍在使用ctypes在我的c代码的python接口上编写.今天我用python版本替换了我的文件读取功能,这是由其他人使用NumPy编写的.使用byref(p_data)调用'old'c版本,而p_data = PFloat()(见下文).main函数采用p_data.

旧文件阅读:

p_data=POINTER(c_float)
foo.read(filename,byref(p_data))
result=foo.pymain(p_data)
Run Code Online (Sandbox Code Playgroud)

另一方面,python文件读取函数返回NumPy数组.我现在的问题是:

如何将NumPy数组转换为POINTER(c_float)?

我用谷歌搜索,但只发现相反的方式:C数组通过ctypes访问为NumPy数组和我不理解的东西:C类型外部函数接口(numpy.ctypeslib)

[update] 更正了示例代码中的错误

python ctypes numpy

9
推荐指数
2
解决办法
2万
查看次数

将2维C数组传递给python numpy

关于将C数组传递给python(numpy)我需要一些帮助.我有2d数组的双倍NumRows x NumInputs,它似乎PyArray_SimpleNewFromData没有正确的方式转换 - 很难看到因为调试器没有显示太多,只有指针.

传递二维数组的正确方法是什么?

int NumRows = X_test.size();
int NumInputs = X_test_row.size();

double **X_test2 = new double*[NumRows];
for(int i = 0; i < NumRows; ++i) 
{
    X_test2[i] = new double[NumInputs];
}


for(int r = 0; r < NumRows; ++r) 
{
    for(int c = 0; c < NumInputs; ++c) 
    {
        X_test2[r][c] = X_test[r][c];
    }
}




const char *ScriptFName = "100-ABN-PREDICT";
char *FunctionName=NULL;

FunctionName="PredictGBC_DBG"; 

npy_intp Dims[2];
Dims[0]= NumRows;
Dims[1] = NumInputs;

PyObject *ArgsArray;
PyObject *pName, *pModule, *pDict, *pFunc, …
Run Code Online (Sandbox Code Playgroud)

c++ python arrays numpy

5
推荐指数
1
解决办法
2691
查看次数

标签 统计

numpy ×2

python ×2

arrays ×1

c++ ×1

ctypes ×1