我使用Boost Python来计算程序的计算密集型部分,它工作得很好,除了将数组从C++传递到Python,反之亦然也很慢,这是程序整体效率的限制因素。在

这里有一个例子来说明我的观点。在C++侧,我返回一个具有较大大小的类型^ {< CD1> }的矩阵。在Python端,我调用该函数并尝试使用两种不同的方法:使用“{{CD2}”方法和我自己(可能是非常天真的)C++实现一个基本转换器来转换结果数组。C++部分:#include

#include

#include

using namespace std;

typedef vector vec;

typedef vector mat;

mat test()

{

int n = 1e4;

mat result(n, vec(n, 0.));

return result;

}

namespace p = boost::python;

namespace np = boost::python::numpy;

np::ndarray convert_to_numpy(mat const & input)

{

u_int n_rows = input.size();

u_int n_cols = input[0].size();

p::tuple shape = p::make_tuple(n_rows, n_cols);

np::dtype dtype = np::dtype::get_builtin();

np::ndarray converted = np::zeros(shape, dtype);

for (u_int i = 0; i < n_rows; i++)

{

for (u_int j = 0; j < n_cols; j++)

{

converted[i][j] = input[i][j];

}

}

return converted;

}

BOOST_PYTHON_MODULE(hermite_cpp)

{

using namespace boost::python;

// Initialize numpy

Py_Initialize();

boost::python::numpy::initialize();

class_("double_vec")

.def(vector_indexing_suite())

;

class_("double_mat")

.def(vector_indexing_suite())

;

def("convert_to_numpy", convert_to_numpy);

def("test", test);

}

python部分:

^{pr2}$

该项目的结果如下:0.56

36.68

26.56

转换能更快吗?或者,甚至更好的是,数组可以在NUMPY和C++之间共享。我在谷歌上搜索了很长时间,但没有多少成功。在

python如何调用c++numpy.ndarray代码_从C++到Numpy ndarray的转换非常简单相关推荐

  1. python程序调用写好的代码_扣丁学堂浅谈Python编程中NotImplementedError的使用方法...

    扣丁学堂浅谈Python编程中NotImplementedError的使用方法 2018-07-04 14:08:02 2559浏览 本篇文章扣丁学堂 Python编程中raise可以实现报出错误的功 ...

  2. python多分支实现四则运算器代码_一份让Python疯狂加速的工具合集!

    这篇文章会提供一些优化代码的工具.会让代码变得更简洁,或者更迅速. 当然这些并不能代替算法设计,但是还是能让Python加速很多倍. 其实前面讲算法的文章,也有提到过.比如适用于双向队列的 deque ...

  3. python 类调用不存在的方法_[python] 类常用的内置方法

    内置方法 说明 __init__(self,...) 初始化对象,在创建新对象时调用 __del__(self) 释放对象,在对象被删除之前调用 __new__(cls,*args,**kwd) 实例 ...

  4. python利用pandas合并excel表格代码_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

  5. python黑色和浅黑色的代码_黑色格式化程序-忽略特定的多行代码 - python

    我想忽略black python formatter的特定多行代码.特别是,它用于np.array或格式化时难看的矩阵构造.以下是示例. np.array( [ [1, 0, 0, 0], [0, - ...

  6. numpy 数组抽取_清晰易懂的Numpy入门教程

    原标题:清晰易懂的Numpy入门教程 翻译 | 石头 来源 | Machine Learning Plus Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pa ...

  7. numpy维度交换_数据分析-gt;基本操作numpy(1)

    1.Numpy介绍与安装 Numpy是什么? Numpy(Numerical Python)是目前Python数值计算中最为重要的基础包.大多数计算包都提供了基于Numpy的科学函数功能,将Numpy ...

  8. dw选项卡代码_使用DW软件实现html编码转换的详细步骤

    HTML转换不能直接通过记事本打开后手动修改代码里的字母就认为完成编码转换修改,这样直接修改后果很容易造成修改后的网页在浏览器中打开出现html乱码情况(html文件怎么打开). 假如你的HTML编码 ...

  9. dw选项卡代码_借助dw软件对html编码转换的方法(dw设置编码)

    常用HTML编码之urf-8编码转换为gb2312编码或者gb2312转换为utf-8编码快速转换设置,这里pCSS5介绍使用DW软件快速转换转化设置教程. HTML转换不能直接通过记事本打开后手动修 ...

最新文章

  1. JSTS学习(一) - 简介
  2. JSON与XML的区别比较(非常全面)
  3. vb excel遍历列_EXCEL如何把多个表格合并成一个表格
  4. [基础题]4、设计一个家政服务规范: 洗衣服, 扫地, 买菜, 做饭
  5. javascript作用域容易记错的两个地方
  6. java面试常考_JAVA面试常考系列十
  7. foxmail怎么加入黑名单 foxmail导入黑名单邮箱地址的教程
  8. C函数形参列表与汇编寄存器的对应关系
  9. 经常吃番茄对身体有什么影响?
  10. [USACO4.1]麦香牛块Beef McNuggets By cellur925
  11. 有趣的算法(五):一文读懂二叉搜索树的插入、删除
  12. 如何开启QtCreator的代码自动补全功能
  13. 微信小程序搜索排名规则,教你怎么让排名靠前
  14. u8系统更改了服务器,用友u8服务器地址修改
  15. 记使用Python+Pandas和Scipy库计算TRIMMEAN(截尾均值)的demo
  16. 比特鹏哥第二节课笔记
  17. 2021-05-27let的TDZ
  18. Js获取中国农历,用于确定非固定的农历节假日
  19. MySQL 是怎么加行级锁的?为什么一会是 next-key 锁,一会是间隙锁,一会又是记录锁?
  20. 关于JDBC我所想说的

热门文章

  1. ILRuntime(二)整合Hotfix到Unity中,脚本生成dll文件
  2. 区块链为信用租赁市场带来新的挑战和机遇
  3. 网管软件Zabbix3.4.8 使用笔记 - 安装配置 20180509
  4. 大数据浪潮下,企业财务人员应如何提升数据分析能力?
  5. python和c 情侣网名_Python3 爬取网站收藏数超过70的 情侣网名
  6. Facebook使用ZTP扩展网络配置自动化
  7. 腾讯 QQ2007 Beta2 阿瑞斯精简版 v0.7.6.2
  8. 纸球的40种折法_折纸系列之恐龙的折法
  9. 程序员算事业单位吗_程序员嘚瑟,嘲笑事业单位员工,一年收入才4万,众人:你还年轻...
  10. 购物网站的秒杀计时器实现