栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python:将ndarray数据传递给C++

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python:将ndarray数据传递给C++

Python numpy库的ndarray数据结构使用很方便,这里记录一下如何将其传递给C/C++代码,
直接上答案:
使用到的库:ctypes

C++代码部分(toPython.cpp):

#include 

extern "C" void showNdarray(int* data, int rows, int cols) {
	for (int i = 0; i < rows; i++) {
		for (int j = 0; j < cols; j++) {
			printf("data[%d][%d] = %dn", i,j,data[i * rows + j]);
		}
	}
}

将C++代码编译成动态链接库:
g++ -o topython.so -shared -fPIC toPython.cpp

Python代码部分:

import ctypes
import numpy as np

# 加载动态库
lcpp = ctypes.cdll.LoadLibrary
cpplib = lcpp("./topython.so")

def transfer_array_to_cpp() :
    data = np.array([[1,2,3,4,5],
                     [2,4,6,8,0]])
    dataptr = data.ctypes.data_as(ctypes.c_char_p)
    rows, cols = data.shape
    # 调用C++函数,将ndarray数据传递给C++
    cpplib.showNdarray(dataptr, rows, cols)
    
if __name__ == '__main__' :
    transfer_array_to_cpp()

Python代码放在和C++链接库同一个目录下,运行即可:

data[0][0] = 1
data[0][1] = 0
data[0][2] = 2
data[0][3] = 0
data[0][4] = 3
data[1][0] = 2
data[1][1] = 0
data[1][2] = 3
data[1][3] = 0
data[1][4] = 4
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号