准备记录numpy和c++的混合编程

#include <boost/python.hpp>
#include <numpy/ndarrayobject.h>
namespace bp = boost::python;
void reference_contiguous_array(PyObject* in,
PyArrayObject* in_con,
double* ptr, int& count)
{
in_con = PyArray_GETCONTIGUOUS((PyArrayObject*)in);
ptr = (double*)PyArray_DATA(in_con);
int num_dim = PyArray_NDIM(in_con);
npy_intp* pdim = PyArray_DIMS(in_con);
count = 1;
for (int i = 0; i < num_dim; i++)
{
count *= pdim[i];
}
}
void dereference(PyObject* o)
{
Py_DECREF(o);
}
PyObject* entry_square_matrix(PyObject* input_matrix)
{
// get the input array
double* ptr;
int count;
PyArrayObject* input_contigous_array;
reference_contiguous_array(input_matrix, input_contigous_array, ptr, count); // create the output array
npy_intp dst_dim[1];
dst_dim[0] = count;
PyObject* out_matrix = PyArray_SimpleNew(1, dst_dim, NPY_FLOAT64);
double* ptr_out;
PyArrayObject* output_contigous_array;
reference_contiguous_array(out_matrix, output_contigous_array, ptr_out, count);
for (int i = 0; i < count; i++)
{
ptr_out[i] = ptr[i] * ptr[i];
}
dereference((PyObject*)input_contigous_array);
dereference((PyObject*)output_contigous_array);
return out_matrix;
}
BOOST_PYTHON_MODULE(_func)
{
import_array();
bp::def(square_matrix, entry_square_matrix);
}

  

记录numpy和c++的混合编程的更多相关文章

  1. 【转载】ANSYS的APDL与C语言混合编程(实例)

    原文地址:http://www.cnblogs.com/lyq105/archive/2010/05/04/1727557.html 本文讨论的不是利用C语言为ANSYS写扩展(或者说是用户子程序), ...

  2. 在Qt(C++)中与Python混合编程

    一.PythonQt库 在Qt(C++)中与Python混合编程,可以使用PythonQt库. 网站首页:http://pythonqt.sourceforge.net 下载页面:https://so ...

  3. QML与C++混合编程详解(转)

    原文转自:http://blog.csdn.net/ieearth/article/details/42243553 原文转自:https://www.cnblogs.com/findumars/p/ ...

  4. [转] Matlab与C++混合编程,添加OpenCV库

    原文地址 峰回璐转 最近在做运动医学软件优化工作,此款软件框架及算法语言全由matlab实现,虽然matlab矩阵运算.数值计算能力强大,但速度让人难以忍 受.软件立刻移植到C++上又不太实际,故采用 ...

  5. QML与C++混合编程详解

    1.QML与C++为什么要混合编程 QML与C++为什么要混合编程,简单来说,就是使用QML高效便捷地构建UI,而C++则用来实现业务逻辑和复杂算法,下面介绍了两者间交互的方法与技巧. 2.QML访问 ...

  6. Matlab与C++混合编程,添加OpenCV库

    最近在做运动医学软件优化工作,此款软件框架及算法语言全由matlab实现,虽然matlab矩阵运算.数值计算能力强大,但速度让人难以忍受.软件立刻移植到C++上又不太实际,故采用联合编程的方式,速度难 ...

  7. VS/Qt C++和Matlab混合编程

    最近两天在搞C++和Matlab混合编程,这个中间过程真是让人心酸啊,最后还是搞定成功!现在把这个过程记录一下. 首先自己的电脑本来就安装着matlab2013b,按着网上的说法首先需要输入!mcc, ...

  8. 九、ITK-VTK混合编程--将序列dcm图像通过ITK读去并通过VTK显示出来

    一.初步介绍 上一个博客里面我记录了VTK的安装,以及相关的工程代码的构建,但是实际上上一个博客测试的代码的例子仅仅只是VTK程序的例子.而我实际上希望能够实现的是VTK和ITK混合编程. 在这里还是 ...

  9. 【调试经验】C++和C的混合编程以及库调用

    问题背景 这两天在移植一个开源的库,偏底层的那种,所以对架构有一些依赖.源码的编译是通过Makefile来构建,怎奈公司的架构用的是CMAKE,所以就在开源的顶层和子目录分别构建了CMakeList, ...

随机推荐

  1. python进行机器学习(二)之特征选择

    毫无疑问,解决一个问题最重要的是恰当选取特征.甚至创造特征的能力,这叫做特征选取和特征工程.对于特征选取工作,我个人认为分为两个方面: 1)利用python中已有的算法进行特征选取. 2)人为分析各个 ...

  2. centos 挂在ntfs

    Installing build-essentials in CentOS (make, gcc, gdb):http://www.techblogistech.com/2012/03/install ...

  3. Linux抓包工具tcpdump

    Linux抓包工具tcpdump http://www.xuchanggang.cn/archives/1107.html

  4. Kotlin 学习使用之旅(二)

    为什么从二开始呢?再此之前已经有了一篇了,那是刚知道kotlin的时候草(chao)来(chao)的并且学习一篇, 这次是自己在项目中正式使用并且遇到的一些问题记录,供kotlin新入门的童鞋参考,避 ...

  5. bzoj 1191 超级英雄Hero

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1191 题解: 裸匈牙利,注意如果出现找不到增广路的情况就直接break #include& ...

  6. 破解 myeclipse 2014 professional,步骤很重要

    网易 博客 GACHA-动漫萌妹汇集地 LOFTER-最美图片社交 印像派-我的照片书 这些小语种最有前途,免费学 注册登录  加关注     日志     Windows下解决PostgreSQL8 ...

  7. Jquery和JS实现浏览器全屏

    var fullscreen=function(){ elem=document.body; if(elem.webkitRequestFullScreen){ elem.webkitRequestF ...

  8. 虚拟存储管理中几种缺页中断算法(最佳置换法OPT)

    缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问. 在进行内存访问时,若所访问的页已在主存,则称此次访问成功: 若所访问的页不在主存,则称此次访问失败,并产生缺页中断. 最佳置换法 ...

  9. Java单线程多实例和多线程多实例

    最近写了一个程序,是采用多线程往redis里面写入数据,想统计一下一共写了多少条数据,于是用了一个static的全局变量count来累加,这块代码抽象出来就是这样的: public class Mul ...

  10. 小程序 image跟view标签上下会有空隙

    解决方案 就是可以在image那里设置vertical-align:top/bottom/text-top/text-bottom 原因:图片文字等inline元素默许是跟父级元素的baseline对 ...