c++读取numpy数据_记录numpy和c++的混合编程

本文介绍了如何使用C++来读取和处理Python numpy数组。通过boost::python库,实现了从numpy数组获取连续内存块,并计算输入矩阵每个元素的平方,输出新的numpy矩阵。
摘要由CSDN通过智能技术生成

#include

#include

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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值