【pybind11笔记】eigen与numpy数据交互

article/2025/8/24 13:06:27

系列文章

【pybind11笔记】eigen与numpy数据交互

【pybind11笔记】python调用c++函数

【pybind11笔记】python调用c++结构体

【pybind11笔记】python调用c++类

文件结构

为了方便演示,我们使用cmake构建该样例,文件结构如下:

在这里插入图片描述

pybind11与eigen3这两个文件夹为对应的资源库,不一定需要放置在该项目当中,这里是为了减少对编译环境的依赖,同时在window下更容易编译。

文件内容

创建一个头文件pybind11_eigen.h,内容如下

#include <pybind11/pybind11.h>
#include <iostream>
#include <pybind11/eigen.h>using namespace std;
namespace py=pybind11;typedef Eigen::Matrix<float, 3, 3> Mat3;
typedef Eigen::Matrix<float, 3, 1> Vec3;Mat3 crossMatrix(Vec3 v);PYBIND11_MODULE(pybind11_eigen, m) {m.def("cross_matrix", &crossMatrix);}

与源文件pybind11_eigen.cpp

#include "pybind11_eigen.h"Mat3 crossMatrix(Vec3 v) {Mat3 m;m << 0, -v[2], v[1],v[2], 0, -v[0],-v[1], v[0], 0;return m;
}

CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8.9)
project(pybind_eigen_test)
set(CMAKE_CXX_STANDARD 11)# 设置头文件&相关库
include_directories(include)
include_directories(eigen3) add_subdirectory(pybind11)# 模块
pybind11_add_module(pybind11_eigen ./src/pybind11_eigen.cpp)

编译测试

mkdir build
cd build
cmake .. 
make

视编译环境可能得用
cmake -G "MinGW Makefile" ..或者 cmake -G "Unix Makefile" ..

我们在ipython环境下进行测试:

$ipython
Python 3.8.3 (default, Jul  2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.In [1]: from pybind11_eigen import *In [2]: import numpy as npIn [3]: 

导入模块没有问题,接下来我们测试功能函数

In [3]: a = np.array([1,2,3])In [4]: b = cross_matrix(a)In [5]: a
Out[5]: array([1, 2, 3])In [6]: b
Out[6]: 
array([[ 0., -3.,  2.],[ 3.,  0., -1.],[-2.,  1.,  0.]], dtype=float32)In [7]: 

http://chatgpt.dhexx.cn/article/3WNNWrJT.shtml

相关文章

python学习笔记:问题一,Geany编辑器无法使用中文注释

python学习笔记&#xff1a; 问题一&#xff1a; Geany编辑器无法使用中文注释 Geany编译python时运行弹出SyntaxError: (unicode error) ‘utf-8’ codec can’t提升&#xff0c;文本编辑器Geany无法使用中文注释&#xff0c;可以设置一下文本编码格式就好了设置方法为&…

Python--注释

Python--注释 <font size4, colorblue> 一、Python中注释的形式<font size4, colorblue> 1、单行注释&#xff1a;使用“#”符号注释<font size4, colorblue> 2、多行注释&#xff1a;使用一对三个英文单引号注释<font size4, colorblue> 3、多行注释&…

python中generate什么意思_python generate怎么用

generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和门级实例引用语句等。细化时间是指仿真开始前的一个阶段&#xff0c;此时所有的设计模块已经被链接到一起&#xff0c;并完…

Python Gevent

参考资料 http://www.gevent.org/contents.htmlhttps://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Gevent.html Python脚本的执行效率一直来说并不是很高&#xff0c;特别是Python下的多线程机制&#xff0c;长久以来一直被人们诟病。很多人都在思考如何让Python执行的更快…

符号回归工具之 geppy: Python中的基因表达编程框架

符号回归工具之 geppy&#xff1a; Python中的基因表达编程框架 geppy是一个专门用于基因表达编程&#xff08;GEP&#xff09;的计算框架&#xff0c;由 C. Ferreira 在 2001 年提出 [1]。 geppy是在 Python 3 中开发的。这个框架个人认为稍微了解下遗传算法和遗传规划即可入…

如何在Geany中添加python的中文注释

在Geany中编译Python中直接添加中文注释会出现如下错误 只需要在程序的开始位置添加一句&#xff1a;# coding:utf-8

python中安装gensim包

安装gensim扩展包需要先安装numpy和scipy 先下载这三个文件的安装包。 注意安装包版本问题&#xff0c;可以进入python查看&#xff1a; 这里注意图中划线的两个地方即可&#xff0c;win代表的是是windows系统 WinR cmd 切换到安装包所在路径&#xff1a; pip install numpy…

搭建云端数据库【MongoDB】

MongoDB官方网站&#xff1a;http://www.cloud.mongodb.com 进入官网后首先点击TRY FREE 创建database 数据库创建完成 点击连接按钮 选择第二个选项 复制连接到项目中&#xff0c;输入密码和数据库名称 在服务端做一些相关配置 1、在根目录下新建d…

云端数据库的春天真来了

点 10月24日&#xff0c;阿里云推出了国内首个云端数据库跑分平台&#xff0c;在行业圈中引起了不少讨论。在阿明看来&#xff0c;这个平台推出的背后&#xff0c;实际上仍然潜藏着数据库领域&#xff0c;用云数据库替换传统数据库的大趋势&#xff0c;正如19世纪末汽车的出现…

【腾讯云技术沙龙预告】云端数据库的设计之美

数据科学俱乐部 中国数据科学家社区 以数据为中心的信息化社会&#xff0c;数据库可以看做是所有应用程序成功运行的核心。而结合云计算&#xff0c;数据库的高可用性能够被放大到极致&#xff0c;可以实现按需付费、按需扩展、高可用性以及存储整合等优势。 本期云社区技术沙龙…

ApiCloud链接云端数据库

apicloud的mcm模块其实就是应用云端数据库完成一系列操作&#xff0c;说到云端数据&#xff0c;当然要先创建数据库&#xff0c;按照如下方式创建&#xff0c;当然&#xff0c;双击就可添加数据 之后就简单了&#xff0c;在项目的页面里写上这样的查询就ok了&#xff0c;其中ap…

云端数据库审计,你不能不知道的秘密

云端数据安全,是云安全中核心的问题之一。要实现云数据安全,需要从多个角度去努力。对数据访问情况的跟踪记录审计,是云数据安全的基本要求。本文从数据源头——数据库的保护角度,以几个问题的问答方式,分析数据库的安全审计问题。 1.什么是云端数据库? 广义的说,云端数…

建立APICloud云端数据库

在我们平常做项目的过程总是会遇到一个较为苦逼的问题——就像假如你是移动端or网页前端的话&#xff0c;想开发一个可以联网的项目&#xff0c;仍然需要一个专门开发后台的人员来跟你一起合作开发项目&#xff0c;但是&#xff0c;假如你是使用APICloud的话&#xff0c;那你就…

一文看懂阿里云端数据库配置+Navicat premium安装

&#x1f388;写在前文 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是小王&#x1f64b;‍♂️&#x1f4dd; 个人主页&#xff1a;你隔壁的小王&#x1f525;&#x1f389; 欢迎点赞&#x1f44d;收藏⭐️留言&#x1f4dd;&#x1f4e3;专栏&#xff1a;SQL&…

阿里云创建云端数据库

阿里云创建云端数据库 从小白开始创建云端数据库。希望可以帮到大家&#xff08;白嫖一个月&#xff09; 1.浏览器中搜索阿里云&#xff08;https://cn.aliyun.com/&#xff09; 2.依次点击&#xff1a;产品—数据库----云数据库 PolarDB 3.进入云数据库 PolarDB后找到新用户…

微信小程序 - 无法获取云端数据库中的数据的问题(修改云端数据库权限)

小程序中从云端数据库获取不到数据 从云端数据库中取数据 // 使用云数据库 const db wx.cloud.database(); export default{data(){return {shopData:[]}},onLoad(){// 获取集合数据&#xff0c;或获取根据查询条件筛选后的集合数据。db.collection(mycloud).get().then(res…

Auto.js 如何通过云服务器,连接云端数据库读写数据。 可用来做脚本云端自动化等....

一、前情提要 Auto.js与按键精灵功能类似 但更加强大&#xff0c;比如控件操作 &#xff0c;以及调用java插件 扩展性强。 但它们有个共通的缺陷&#xff01;&#xff01; 无法从移动端直接链接数据库 读写数据&#xff0c; 所以需要做一个中转站来传递读写信息。 二、大概原…

JS访问云端数据库小问题之代码不会顺序执行

微信小程序云开发JS访问云端数据库小问题之代码不会顺序执行 用ES6写法的 .then .catch 徽派在后边执行&#xff1a; formSubmit(e) { // 表单提交items e.detail.valuewx.cloud.database().collection(Student)//单条数据查询.where({number: items.number}).get().then(res…

锋云数据服务器管理文件说明书,云端数据库使用说明

NoteExpress提供云端文献库功能了&#xff01;云端文献库会自动将题录、笔记及附件同步到云服务器&#xff0c;便于在不同电脑之间同步您的工作。 登录 使用云端文献库&#xff0c;需要在NoteExpress中登录&#xff0c;建议勾选自动登录。 使用 登录后&#xff0c;在NoteExpres…

(esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL

前言 之前物联网硬件采集数据一直都是通过阿里云实现数据的可视化&#xff0c;没有将硬件采集到的数据存入云数据库&#xff0c;没有进一步利用数据进行操作。 本文一共有五个步骤&#xff1a; 1.esp32通过arduino平台和硬件DHT11温湿度模块采集数据 2.创建EMQ X Cloud MQTT云服…