c – 编织内联类型转换(python)

c – 编织内联类型转换(python),第1张

概述祝2013年好! 我正在使用SciPy编织内联我的一些C代码来转置巨大的矩阵(大约200.000 x 15).它就像一个魅力,但我有一个关于类型转换的问题: 我的输入矩阵是从文件,逗号分隔等中读取的,因此所有条目都是字符串而不是浮点数(‘0.551’而不是0.551).这不影响转置函数的工作方式,但后来我必须将某些行转换为numpy float数组,所以我想知道是否可以在C代码中完成.让我解释一些 祝2013年好!

我正在使用SciPy编织内联我的一些C代码来转置巨大的矩阵(大约200.000 x 15).它就像一个魅力,但我有一个关于类型转换的问题:

我的输入矩阵是从文件,逗号分隔等中读取的,因此所有条目都是字符串而不是浮点数(‘0.551’而不是0.551).这不影响转置函数的工作方式,但后来我必须将某些行转换为numpy float数组,所以我想知道是否可以在C代码中完成.让我解释一些代码:

def transpose(lines,N,x):    code =  """            py::List matrix;            for(int i = 0; i < x; i++) {                py::List line;                if(i == 1) { continue; }                for(int j = 0; j < N; j++) {                    line.append(lines[j][i]);                }                matrix.append(line);            }            return_val = matrix;            """    return weave.inline(code,['lines','N','x'])matrix = [['0.5','0.1'],['0.2','0.2']]matrixT = transpose(matrix,len(matrix),len(matrix[0]))final_result = np.array(matrixT[0],dtype=float)

在示例中,我的小矩阵将被转置,我的示例结果将是转置矩阵的第一行转换为dtype float类型的numpy数组.这可以用C代码完成吗?我尝试过使用双x =(双)行[j] [i]和类似的东西,但它不知何故不适用于附加到py :: List对象.

解决方法 以下内容可以完成您所追求的全部内容:

def transpose(lines):    code =  """            for(int i = 0; i < x; i++) {                for(int j = 0; j < N; j++) {                    out[j + i * N] = atof(lines[j][i]);                    // OUT2(i,j) = atof(lines[j][i]);                }            }            """    N = len(lines)    x = len(lines[0])    out = np.empty((x,N),dtype=np.float64)    weave.inline(code,'x','out'])    return out>>> matrix = [['0.5','0.1','0.7'],'0.2','0.4']]>>> matrix[['0.5','0.4']]>>> transpose(matrix)array([[ 0.5,0.2],[ 0.1,[ 0.7,0.4]])

除了经常忘记;在没有编写任何C之类的6年之后,我在查找C代码中的内容时遇到了很多麻烦,最后它是指向数据本身的指针,而不是像documentation那样的PyArrayObject指针.编织定义了两个可供使用的变量,out_array和py_out,它们分别是PyArrayObject *和PyObject *类型.

我留下了一个替代版本的作品:weave自动定义宏< VAR> 1,< VAR> 2,< VAR> 3和< VAR> 4来访问相应数量的数组的数组尺寸.

@H_403_35@ 总结

以上是内存溢出为你收集整理的c – 编织内联类型转换(python)全部内容,希望文章能够帮你解决c – 编织内联类型转换(python)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1230743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存