当前位置: 首页 > news >正文

PyQt5、NumPy、Pandas 及 ModelArts 综合笔记

PyQt5、NumPy、Pandas 及 ModelArts 综合笔记


PyQt5 GUI 开发

信号与槽

  • 概念:对象间解耦通信机制。

    • 信号:对象状态改变时发射,例如 btn.clicked
    • :接收信号的普通函数或方法。
  • 连接signal.connect(slot)断开signal.disconnect(slot)

  • 示例

    # 内置信号→内置槽
    btn.clicked.connect(self.close)# 内置信号→自定义槽
    btn.clicked.connect(self.on_click)
    def on_click(self):print("按钮被点击")# 自定义信号
    class MyWidget(QWidget):my_signal = pyqtSignal()def __init__(self):super().__init__()self.my_signal.connect(self.handle_signal)def emit_signal(self):self.my_signal.emit()def handle_signal(self):print("自定义信号接收")
    

事件处理

  • 主循环app.exec_() 启动事件循环,监听并分发事件。

  • 重写事件处理

    • paintEvent(event):绘制时调用。

    • closeEvent(event):关闭窗口时调用。

      def closeEvent(self, event):reply = QMessageBox.question(self, '确认退出', '确定要退出吗?',QMessageBox.Yes | QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept()else:event.ignore()
      
    • mousePressEvent(event)mouseMoveEvent(event)mouseReleaseEvent(event)wheelEvent(event)

    • keyPressEvent(event):键盘按下。

高级控件

  • 表格与列表QTableWidgetQTableView + 模型;QListWidgetQListView + 模型。
  • 树形结构QTreeWidgetQTreeView + QStandardItemModel
  • 容器QTabWidgetQStackedWidgetQDockWidgetQScrollArea
  • 特殊控件QCalendarWidgetQSliderQProgressBarQSpinBoxQComboBox

拼图 游戏实现

  1. 窗口与布局QMainWindow + QGridLayout
  2. 图像分割:将原图切为 3×3 片,保留一个空白块。
  3. 随机排列:打乱各块顺序,并生成相应 QLabel 或自定义控件。
  4. 鼠标交互:重写 mousePressEvent 检测点击块,判断与空白块相邻则交换位置。
  5. 胜利检测:每次交换后比较当前顺序与目标顺序。
  6. 界面更新:调用 update() 或动态调整控件布局。

NumPy 矩阵与数值计算

简介与安装

  • 简介:高性能多维数组计算库。
  • 安装pip install numpy
  • 导入import numpy as np
  • 版本np.__version__

ndarray 基础

  • 创建

    a = np.array([1,2,3])
    b = np.zeros((2,3))
    c = np.ones((3,))
    d = np.arange(0,10,2)
    e = np.linspace(0,1,5)
    
  • 属性ndim, shape, size, dtype, itemsize

  • 重塑a.reshape(new_shape)a.shape = new_shape

索引与切片

  • 一维a[i], a[start:stop:step], a[::-1]
  • 多维a[row, col], a[start:stop, start:stop], a[..., idx]
  • 花式索引a[[1,3,5]]
  • 布尔索引a[a > 5]

广播机制

  • 规则

    1. 维度对齐:在小数组前补 1。
    2. 同维度长度相同或有一方为 1。
    3. 视为兼容后广播。
  • 示例

    a = np.array([[1,2,3],[4,5,6]])  # (2,3)
    b = np.array([1,0,1])            # (3,)
    c = a + b  # b 广播为 (2,3)
    

通用函数(ufunc)

  • 逐元素运算np.add, np.sin, np.exp, np.logical_and 等。
  • 运算符+, -, *, /, **, %

常用函数

  • 随机np.random.rand(), randn(), randint(), seed(), shuffle()
  • 聚合np.sum(), mean(), std(), min(), max(), argmax()
  • 排序np.sort(a), np.argsort(a)

Pandas 数据分析

简介与数据结构

  • 简介:高效的标签化数据处理库。
  • 数据结构
    • Series:一维带索引。
    • DataFrame:二维表格结构,可存储不同类型。
  • 安装pip install pandas
  • 导入import pandas as pd

创建 Series 与 DataFrame

  • Series

    s = pd.Series([1,2,3], index=['a','b','c'], name='示例')
    
  • DataFrame

    df = pd.DataFrame({'A':[1,2],'B':[3,4]
    }, index=['row1','row2'])
    

查看数据

  • df.head(), df.tail()
  • df.info(), df.describe()
  • df.shape, df.dtypes, df.columns, df.index

选择与索引

  • df['col'], df[['col1','col2']]
  • df.loc[label], df.iloc[pos], 切片
  • 组合df.loc[row, col]
  • 布尔索引df[df['A'] > 0]
  • 快速访问df.at['row','A'], df.iat[0,0]

缺失值处理

  • 检测df.isna(), df.isnull()
  • 删除df.dropna(axis=0, how='any')
  • 填充df.fillna(method='ffill', limit=2)

数据操作

  • 赋值df['C'] = np.arange(len(df))
  • 合并pd.concat([df1, df2])
  • 连接pd.merge(df1, df2, on='key', how='inner')
  • 分组df.groupby('A').sum()

数据清洗摘要

方法功能说明
dropna()删除含 NaN 的行或列
fillna()填充 NaN 值
drop_duplicates()删除重复行
replace()替换指定值

华为云 ModelArts 平台

概览

  • 一站式 AI 开发平台,涵盖标注、训练、部署全流程。

自动学习流程

  1. 创建项目:选择场景(图像分类/目标检测/预测分析)。
  2. 数据标注:从 OBS 上传/同步并标注。
  3. 模型训练:配置训练参数、计算规格、提交任务。
  4. 部署服务:在线服务发布,上传示例数据测试。
图像分类
  • 至少 2 个类别,每类 ≥5 张图片。
  • 流程:数据→训练→部署→测试。
目标检测
  • 使用矩形框标注。
  • 订阅预置算法(如 Faster R-CNN)。
预测分析
  • 上传 CSV,选择目标列,训练并部署 JSON 接口。

数据管理

  • 创建、版本化数据集(图像、表格)。
  • 使用 OBS Browser+ 上传、标注。
  • 发布版本供训练使用。

预置算法

  • 在 AI Gallery 订阅 ResNet、Faster R-CNN 等。
  • 创建训练作业并部署 AI 应用。
http://www.xdnf.cn/news/86203.html

相关文章:

  • # 基于PyTorch的食品图像分类系统:从训练到部署全流程指南
  • 第 2.1 节: 机器人仿真环境选择与配置 (Gazebo, MuJoCo, PyBullet)
  • 【Dv3Admin】从零搭建Git项目安装·配置·初始化
  • iPaaS集成平台相比传统集成技术有哪些优势?
  • ECharts中的markPoint使用,最大值,最小值,展示label数值
  • JavaScript 渲染内容爬取实践:Puppeteer 进阶技巧
  • Qt之moveToThread
  • Spark-Streaming简介 核心编程
  • 【MySQL】索引失效场景大全
  • C++:继承
  • window上 elasticsearch v9.0 与 jmeter5.6.3版本 冲突,造成es 启动失败
  • 使用Autocannon.js进行HTTP压测
  • Vue3 + Vite + TS,使用 ExcelJS导出excel文档,生成水印,添加背景水印,dom转图片,插入图片,全部代码
  • 建造者模式详解及其在自动驾驶场景的应用举例(以C++代码实现)
  • 数据库对象与权限管理-Oracle数据字典详解
  • Linux mmp文件映射补充(自用)
  • 【Linux】虚拟内存——页表与分页
  • 性能测试篇——八股笔记
  • 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
  • IOT项目——物联网 GPS
  • 如何在 Ansys Icepak AEDT 中设置多个流程以加快仿真速度?
  • 第十五讲、Isaaclab中在机器人上添加传感器
  • linux基础14--dns和web+dns
  • 【SAP-CO】生产的成本流转和成本分析
  • Gmail收取POP3邮件总是出错:服务器返回错误“Error in RETR command: Received an empty line”的解决方法
  • 基于国产 FPGA+ 龙芯2K1000处理器+翼辉国产操作系统继电保护装置测试装备解决方案
  • 0基础 | 51单片机 | Proteus仿真
  • 使用Nginx搭建Web服务
  • 黑马商城(六)RabbitMQ
  • 使用达梦官方管理工具SQLark快速生成数据库ER图并导出