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

《Python星球日记》 第36天:线性代数基础

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
专栏:《Python星球日记》,限时特价订阅中ing

目录

    • 一、标量、向量、矩阵的基本概念
      • 1. 标量
      • 2. 向量
      • 3. 矩阵
    • 二、矩阵运算
      • 1. 矩阵加法
      • 2. 矩阵乘法
      • 3. 矩阵转置
      • 4. 逆矩阵
    • 三、向量空间与线性组合
      • 1. 向量空间的概念
      • 2. 线性组合
      • 3. 线性独立性
    • 四、NumPy 实践:矩阵运算
      • 1. NumPy 基础
      • 2. 使用 NumPy 进行矩阵运算
      • 3. 实战示例:使用NumPy解线性方程组
    • 总结与展望

👋 专栏介绍: Python星球日记专栏介绍(持续更新ing)
上一篇: 《Python星球日记》第35天:全栈开发(综合项目)

欢迎来到Python星球的第36天!🪐

在前面我们学习了Python基础、爬虫、数据可视化,并深入了解了Web开发。今天,我们将探索线性代数基础,这是数据科学和机器学习领域的重要基石。无论是图像处理、推荐系统还是神经网络,线性代数都是不可或缺的数学工具。让我们一起踏上这段数学之旅!

在这里插入图片描述

一、标量、向量、矩阵的基本概念

在线性代数中,我们首先需要理解三个基本概念:标量向量矩阵。这些是构建整个线性代数体系的基础元素。

1. 标量

标量(Scalar)是最简单的数学对象,它就是一个单独的数字。

比如:5、-3、0.5、π 等都是标量。在Python中,我们可以用常规的数值类型来表示标量:

# 标量示例
a = 5       # 整数类型标量
b = 3.14    # 浮点类型标量
c = 2 + 3j  # 复数类型标量

2. 向量

向量(Vector)是有序的数字集合,可以看作是一个一维数组。向量可以表示为行向量(横排)或列向量(竖排)。

在这里插入图片描述

在Python中,我们通常使用NumPy库中的arrayvector来表示向量:


import numpy as np# 创建向量
column_vector = np.array([[1], [2], [3]])  # 列向量 - 形状为(3,1)
row_vector = np.array([4, 5, 6])           # 行向量 - 形状为(3,)print(column_vector)
print(row_vector)

在这里插入图片描述

向量可以表示空间中的方向和大小,如位置、速度或力,也可以表示数据集中的特征集合。

3. 矩阵

矩阵(Matrix)是二维数字表格,可以看作是向量的集合。矩阵由行和列组成,通常用大写字母表示(如A、B等)。
在这里插入图片描述

矩阵的维度由其行数和列数决定。一个有m行n列的矩阵称为m×n矩阵。

在Python中,使用NumPy创建矩阵非常简单:

import numpy as np# 创建2×3矩阵
A = np.array([[1, 2, 3],[4, 5, 6]])print(A)
print(f"矩阵维度: {A.shape}")  # 输出: (2, 3)

在这里插入图片描述

矩阵在数据科学机器学习中应用广泛,例如:

  • 图像处理中的图像就是像素矩阵
  • 社交网络中的连接关系可用邻接矩阵表示
  • 推荐系统中的用户-物品评分矩阵

二、矩阵运算

矩阵的基本运算包括加法、乘法、转置和求逆。让我们逐一了解这些操作并用NumPy实现。

1. 矩阵加法

矩阵加法的规则很简单:相同位置的元素相加。两个矩阵必须具有相同的维度才能相加。

在这里插入图片描述

NumPy实现矩阵加法非常直观:

import numpy as np# 创建两个2×2矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])# 矩阵加法
C = A + Bprint(f"矩阵A:\n{A}")
print(f"矩阵B:\n{B}")
print(f"A + B =\n{C}")  # 输出: [[6 8], [10 12]]

在这里插入图片描述

矩阵加法满足交换律结合律:A + B = B + A 以及 (A + B) + C = A + (B + C)。

2. 矩阵乘法

矩阵乘法比加法复杂,有两种主要类型:

  • 点乘(element-wise multiplication):对应位置的元素相乘
  • 矩阵乘法(matrix multiplication):遵循特定的数学规则

矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数。假设矩阵A的维度是m×n,矩阵B的维度是n×p,那么A×B的结果是一个m×p的矩阵。

在这里插入图片描述

NumPy中实现矩阵乘法有多种方式:

import numpy as np# 创建矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])# 点乘(元素相乘)
C_elementwise = A * B
print(f"点乘结果:\n{C_elementwise}")  # 输出: [[5 12], [21 32]]# 矩阵乘法
C_matmul = np.matmul(A, B)  # 或使用 A @ B (Python 3.5+)
print(f"矩阵乘法结果:\n{C_matmul}")  # 输出: [[19 22], [43 50]]# 使用 dot 函数
C_dot = A.dot(B)
print(f"使用dot函数的结果:\n{C_dot}")  # 输出与C_matmul相同

在这里插入图片描述

矩阵乘法不满足交换律:通常情况下,A×B ≠ B×A。这是初学者容易犯的一个错误。

3. 矩阵转置

矩阵的转置是指将矩阵的行和列互换。如果A是一个m×n矩阵,那么它的转置A^T是一个n×m矩阵。

在这里插入图片描述

在NumPy中,转置操作非常简单:

import numpy as np# 创建2×3矩阵
A = np.array([[1, 2, 3],[4, 5, 6]])# 转置矩阵
A_T = A.T  # 或使用 np.transpose(A)print(f"原矩阵A:\n{A}")
print(f"转置后A^T:\n{A_T}")

在这里插入图片描述

矩阵转置的一些重要性质:

  • (AT)T = A(转置的转置等于原矩阵)
  • (A + B)^T = A^T + B^T(转置分配律)
  • (AB)^T = B^T A^T(转置的乘法顺序会反转)

4. 逆矩阵

逆矩阵是线性代数中的一个重要概念。只有方阵(行数等于列数的矩阵)才可能有逆矩阵。

如果矩阵A的逆矩阵存在,记为A^(-1),则有:A × A^(-1) = A^(-1) × A = I,其中I是单位矩阵(对角线上元素为1,其他元素为0)。

在这里插入图片描述

在NumPy中,可以使用np.linalg.inv()函数求矩阵的逆:

import numpy as np# 创建可逆矩阵
A = np.array([[4, 7], [2, 6]])# 计算逆矩阵
try:A_inv = np.linalg.inv(A)print(f"矩阵A:\n{A}")print(f"A的逆矩阵:\n{A_inv}")# 验证 A × A^(-1) = II = np.dot(A, A_inv)print(f"A × A^(-1) =\n{np.round(I, decimals=10)}")  # 使用round处理浮点误差
except np.linalg.LinAlgError:print("矩阵不可逆")

在这里插入图片描述

需要注意的是,并非所有矩阵都有逆矩阵。如果矩阵的行列式为0,那么它没有逆矩阵,被称为奇异矩阵不可逆矩阵

逆矩阵在解线性方程组和机器学习中非常重要,比如在线性回归中求解系数时就需要用到。

三、向量空间与线性组合

1. 向量空间的概念

向量空间是包含向量的集合,该集合对向量加法和标量乘法运算封闭。简单来说,向量空间是一组向量,且任意两个向量的和以及任意向量与标量的积仍然属于该空间。

在这里插入图片描述

最常见的向量空间是欧几里得空间,如二维平面R²或三维空间R³。

2. 线性组合

线性组合是向量空间的一个核心概念。一组向量的线性组合是指将这些向量乘以标量系数后相加

形式上,向量v₁, v₂, …, vₙ的线性组合可表示为:c₁v₁ + c₂v₂ + … + cₙvₙ

其中c₁, c₂, …, cₙ是标量系数。

通过线性组合,我们可以用少量的基础向量生成整个向量空间。例如,在二维空间中,任何向量都可以表示为标准基向量i = [1, 0]和j = [0, 1]的线性组合。

import numpy as np
import matplotlib.pyplot as plt# 设置中文字体支持
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 标准基向量
e1 = np.array([1, 0])  # i 向量
e2 = np.array([0, 1])  # j 向量# 任意向量作为线性组合
v = np.array([3, 2])   # 3i + 2j# 可视化
plt.figure(figsize=(8, 6))
plt.axhline(y=0, color='k', linestyle='-', alpha=0.3)
plt.axvline(x=0, color='k', linestyle='-', alpha=0.3)
plt.arrow(0, 0, e1[0], e1[1], head_width=0.1, head_length=0.1, fc='blue', ec='blue', label='e1')
plt.arrow(0, 0, e2[0], e2[1], head_width=0.1, head_length=0.1, fc='green', ec='green', label='e2')
plt.arrow(0, 0, v[0], v[1], head_width=0.1, head_length=0.1, fc='red', ec='red', label='v=3e1+2e2')
plt.grid(True, alpha=0.3)
plt.xlim(-0.5, 4)
plt.ylim(-0.5, 3)
plt.legend()
plt.title('向量的线性组合示例')
plt.show()

在这里插入图片描述

3. 线性独立性

向量集合{v₁, v₂, …, vₙ}如果满足:c₁v₁ + c₂v₂ + … + cₙvₙ = 0只有当所有c₁ = c₂ = … = cₙ = 0时成立,那么这组向量就是线性独立的。

换句话说,线性独立意味着集合中的任何向量都不能表示为其他向量的线性组合。

在这里插入图片描述

在NumPy中,我们可以用以下方法检查向量是否线性独立,通常通过计算矩阵的(rank):

import numpy as np# 创建向量集合
v1 = np.array([1, 0, 0])
v2 = np.array([0, 1, 0])
v3 = np.array([1, 1, 0])  # v3 = v1 + v2,所以是线性相关的# 将向量作为矩阵的行
matrix = np.vstack((v1, v2, v3))# 计算矩阵的秩
rank = np.linalg.matrix_rank(matrix)# 判断线性独立性
n_vectors = matrix.shape[0]  # 向量数量
if rank == n_vectors:print("这些向量是线性独立的")
else:print("这些向量是线性相关的")print(f"秩 = {rank},向量数量 = {n_vectors}")

在这里插入图片描述

线性独立性的概念在许多领域都很重要:

  • 在机器学习中,特征选择就是要找到线性独立的特征集合
  • 主成分分析(PCA)中,我们寻找数据的主成分,这些主成分是线性独立的
  • 在解线性方程组时,判断方程组是否有唯一解

四、NumPy 实践:矩阵运算

现在让我们通过一系列实际的Python代码示例,巩固对线性代数的理解。

1. NumPy 基础

NumPy是Python中进行科学计算的基础库,提供了强大的多维数组对象和处理这些数组的工具。

import numpy as np# 创建数组
a = np.array([1, 2, 3])                # 一维数组
b = np.array([[1, 2, 3], [4, 5, 6]])   # 二维数组# 一些基本操作
print(f"数组b的形状: {b.shape}")        # (2, 3)
print(f"数组b的维度: {b.ndim}")         # 2
print(f"数组b的元素类型: {b.dtype}")    # int64
print(f"数组b的元素总数: {b.size}")     # 6# 创建特殊矩阵
eye = np.eye(3)                        # 3×3单位矩阵
zeros = np.zeros((2, 3))               # 2×3全零矩阵
ones = np.ones((2, 2))                 # 2×2全一矩阵
random_matrix = np.random.rand(2, 3)    # 2×3随机矩阵print(f"单位矩阵:\n{eye}")

在这里插入图片描述

2. 使用 NumPy 进行矩阵运算

让我们实现前面讨论过的矩阵运算:

import numpy as np# 创建样例矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])# 1. 矩阵加法
C_add = A + B
print(f"矩阵加法 A + B =\n{C_add}")# 2. 矩阵乘法
C_mul = A @ B  # 或 np.matmul(A, B) 或 A.dot(B)
print(f"矩阵乘法 A × B =\n{C_mul}")# 3. 矩阵转置
A_T = A.T
print(f"矩阵A的转置 =\n{A_T}")# 4. 矩阵的逆(如果存在)
try:A_inv = np.linalg.inv(A)print(f"矩阵A的逆 =\n{A_inv}")# 验证 A × A^(-1) = II_check = A @ A_invprint(f"A × A^(-1) =\n{np.round(I_check, decimals=10)}")
except np.linalg.LinAlgError as e:print(f"错误: {e}")# 5. 求矩阵的行列式
det_A = np.linalg.det(A)
print(f"矩阵A的行列式 = {det_A}")# 6. 求矩阵的特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
print(f"矩阵A的特征值 = {eigenvalues}")
print(f"矩阵A的特征向量 =\n{eigenvectors}")

在这里插入图片描述

3. 实战示例:使用NumPy解线性方程组

线性代数的一个重要应用是解线性方程组。例如,解方程组:

  • 2x + y = 8
  • 3x + 5y = 19

可以表示为矩阵形式:AX = B,其中A是系数矩阵,X是未知数向量,B是常数向量。

import numpy as np# 定义系数矩阵A和常数向量B
A = np.array([[2, 1], [3, 5]])
B = np.array([8, 19])# 方法1:使用矩阵的逆
# X = A^(-1) × B
X1 = np.linalg.inv(A).dot(B)
print(f"使用矩阵的逆解得: x = {X1[0]}, y = {X1[1]}")# 方法2:使用numpy的线性代数解法函数
X2 = np.linalg.solve(A, B)
print(f"使用linalg.solve解得: x = {X2[0]}, y = {X2[1]}")# 验证解是否正确
verification = A @ X2
print(f"验证: A × X = {verification},应等于B = {B}")

在这里插入图片描述

这个例子展示了如何将实际问题转化为线性代数问题并使用NumPy求解。这种方法在数据科学机器学习科学计算中应用广泛。

总结与展望

今天,我们学习了线性代数的基础知识,包括标量、向量和矩阵的概念,矩阵的基本运算(加法、乘法、转置和求逆),以及向量空间和线性组合的概念。我们还通过NumPy实现了这些操作,并展示了如何应用线性代数解决实际问题。

线性代数是机器学习数据科学的重要基础。在未来的学习中,你会发现这些知识对于理解以下内容至关重要:

  • 机器学习算法,如线性回归、主成分分析(PCA)和支持向量机(SVM)
  • 深度学习中的矩阵运算和梯度下降
  • 计算机图形学中的变换矩阵
  • 优化问题的数学建模和求解

下一步,你可以深入学习更多线性代数概念,以及它们在实际应用中的角色。

今天的知识是我们探索数据科学人工智能宇宙的第一步,未来我们将继续这段Python星球探索之旅!


通过这篇文章,你已经掌握了线性代数的基础知识和NumPy的矩阵操作。试着自己实现一些示例,加深对概念的理解。线性代数不仅仅是抽象的数学,它是解决现实问题的强大工具!

创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
如果你对今天的内容有任何问题,或者想分享你的学习心得,欢迎在评论区留言讨论!

相关文章:

《Python星球日记》 第36天:线性代数基础

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、标量、…...

使用 Spring Boot 构建 REST API

使用 Spring Boot 构建 REST API 使用 Spring Boot 构建 REST API1. Spring Initializr构建springboot2. API 合同 & JSONAPI 协定什么是 JSON? 3.先测试什么是测试驱动开发?测试金字塔Red, Green, Refactor 循环 4. 实施 GET…...

PHP分页显示数据,在phpMyadmin中添加数据

<?php $conmysqli_connect(localhost,root,,stu); mysqli_query($con,"set names utf8"); //设置字符集为utf8 $sql"select * from teacher"; $resultmysqli_query($con,$sql); $countmysqli_num_rows($result); //记录总条数$count。 $pagesize10;//每…...

Spring Boot操作MongoDB的完整示例大全

以下是基于Spring Boot操作MongoDB的完整示例大全&#xff0c;涵盖增删改查、聚合查询、索引、事务等核心功能&#xff1a; 一、基础CRUD操作 1. 环境配置 依赖配置&#xff08;pom.xml&#xff09; <dependency><groupId>org.springframework.boot</groupId…...

SpringCloud入门教程合集(1)-SpringCloud简介与Eureka+Feign实现服务注册中心、服务提供与服务消费

场景 SpringCloud 总体架构与核心子项目 SpringCloud 总体架构 1. 基础设施层 服务注册与发现&#xff1a;Eureka/Nacos 配置中心&#xff1a;Spring Cloud Config/Nacos 消息总线&#xff1a;Spring Cloud Bus 2. 服务通信层 负载均衡&#xff1a;Ribbon/LoadBalancer…...

【Linuc】深入理解 Linux 文件权限

文章目录 一、权限基础解析1. 权限三元组2. 权限类型与数字映射二、查看文件权限三、修改权限实战1. chmod 命令符号模式数字模式(推荐)2. chown 修改归属四、特殊权限机制1. SetUID (Set User ID)2. SetGID (Set Group ID)3. Sticky Bit五、高级权限管理1. 默认权限控制2. A…...

ExtraMAME:复古游戏的快乐“时光机”

嘿&#xff0c;小伙伴们&#xff01;今天电脑天空要给大家安利一款超有趣的软件——ExtraMAME&#xff01;如果你对复古街机游戏念念不忘&#xff0c;那它绝对能成为你的快乐源泉&#xff0c;带你瞬间穿越回那个充满游戏机的黄金时代。 ExtraMAME是一款基于MAME&#xff08;Mu…...

没有 Mac,如何把 iOS App 成功上架?

开发者的 iOS 上架折腾记&#xff1a;没有 Mac&#xff0c;也能搞定&#xff1f; 最近在帮朋友把一个跨平台 Flutter 项目上架到 App Store&#xff0c;结果被 iOS 上架的那套流程卡得头都大了。其实这也不是第一次碰壁了——每次到“申请证书 打包 上传”的时候&#xff0c…...

使用VMware Workstation pro 17.5.1在Windows上安装Ubuntu 24.04.2的 详细步骤

一、准备工作 1. 下载Ubuntu 24.04.2 ISO镜像 官方下载地址&#xff1a;Ubuntu 24.04.2 (Noble Numbat) 选择 ubuntu-24.04.2-desktop-amd64.iso&#xff08;桌面版&#xff09;或 ubuntu-24.04.2-live-server-amd64.iso&#xff08;服务器版&#xff09;。 2. 确认系统要求…...

栈与队列详解及模拟实现

目录 ​​一、栈&#xff08;Stack&#xff09;&#xff1a;后进先出​ ​​1.1 什么是栈​ ​​1.2 栈的使用​​ ​​1.3 栈的模拟实现​ ​​1.4 栈的经典应用​​ ​​二、队列&#xff08;Queue&#xff09;&#xff1a;先进先出​ ​​2.1 什么是队列 2.2 队列的使…...

Cursor无法SSH远程连接服务器免密登录问题

在本地机器和Ubuntu服务器之间实现SSH远程免密连接&#xff0c;可按如下步骤操作&#xff1a; 1. 生成SSH密钥对 在本地机器上开启终端&#xff0c;使用以下命令生成SSH密钥对&#xff1a; ssh-keygen -t rsa按提示操作&#xff0c;一般直接回车&#xff0c;这样密钥会生成在…...

【Vue】全局事件总线 TodoList 事件总线

目录 一、 实现所有组件看到x事件 二、 实现$on $off 以及 $emit 总结不易~ 本章节对我有很大的收获&#xff0c; 希望对你也是&#xff01;&#xff01;&#xff01; 本节素材已上传至Gitee&#xff1a;yihaohhh/我爱Vue - Gitee.com 全局事件总线图&#xff1a; 本节素材…...

动态规划背包问题

一、0-1背包问题 0-1背包问题就是给定n个物品和一个容量为C的背包&#xff0c;物品i的重量是Wi,其价值是Vi。问&#xff1a;应该如何选择装入背包的物品&#xff0c;使总价值最大且总重量不超过C&#xff1f; 1.确定状态表示 dp[i][j] 表示在背包容量为j时&#xff0c;从下标…...

ctfshow web入门 web49

信息收集 此%非彼%&#xff0c;%0a中的%不会被识别&#xff0c;因为识别之前就已经自动转化为了换行符 所以和之前一样的解法&#xff0c;没什么好说的 if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|…...

AI+浏览器自动化:Nanobrowser Chrome 扩展的使用「详细教程」

AI+浏览器自动化:Nanobrowser Chrome 扩展的使用「详细教程」 一、前言二、Nanobrowser简介2.1 项目背景2.2 核心特性三、安装与配置3.1 安装方式3.1.1 Chrome Web Store安装3.1.2 手动安装最新版3.2 基本配置3.2.1 添加API Key3.2.2 选择模型3.2.3 其他设置四、核心功能详解4…...

【表设计】外键的取舍-分布式中逐渐消失的外键

在分布式大行其道的今天&#xff0c;为什么外键约束越来越少&#xff1f; 外键-数据链接带来强制完整性 在关系型数据库中&#xff0c;外键&#xff08;Foreign Key&#xff09;可以用于建立和强制两个表之间的数据链接。 在层次数据结构一篇的闭包表简单设计中&#xff0c;…...

HarmonyOS 5.0 分布式数据协同与跨设备同步​​

大家好&#xff0c;我是 V 哥。 使用 Mate 70有一段时间了&#xff0c;系统的丝滑使用起来那是爽得不要不要的&#xff0c;随着越来越多的应用适配&#xff0c;目前使用起来已经和4.3的兼容版本功能差异无碍了&#xff0c;还有些纯血鸿蒙独特的能力很是好用&#xff0c;比如&am…...

多行文本省略

方式1 兼容性不好 height: 100px; line-height: 25px; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;方式2 利用浮动环绕、空白元素站位margin-top调整位置 <div class"wrap"><div class"more"…...

Adobe卸载清理工具Creative Cloud Cleaner Tool下载

Adobe Creative Cloud Cleaner Tool 是 Adobe 公司官方推出的一款卸载清理工具&#xff0c;主要用于清理 Creative Cloud 应用程序在安装、更新或卸载过程中可能遗留下来的错误配置文件、缓存、注册表项或其他系统级残留内容。相比一般的卸载程序&#xff0c;它更深入地处理系统…...

分布式、高并发-Day03

以下是 Day 3 详细学习内容&#xff08;线程池拒绝策略实战&#xff1a;DiscardOldestPolicy与CallerRunsPolicy&#xff0c;30 分钟完整计划&#xff09;&#xff0c;包含策略原理、分步代码实战和场景解析&#xff1a; &#x1f4d6; 今日学习目标 掌握DiscardOldestPolicy…...

高等数学第四章---不定积分(4.4有理函数的不定积分2)

&4.4有理函数的不定积分2 篇幅有限制&#xff0c;例题的解答会占大量字符&#xff0c;html限制字符为22000个左右。这里继续探讨上文的有理函数的不定积分。 一、三角函数有理式的不定积分 由 sin ⁡ x \sin x sinx, cos ⁡ x \cos x cosx 以及常数经过有限次加、减、…...

C++中指针使用详解(4)指针的高级应用汇总

C 中指针的高级应用非常丰富&#xff0c;掌握这些内容能让你写出更高性能、更底层控制力强的代码。下面是应用模块梳理和例子讲解。 目录预览 函数指针与回调机制指针数组 vs 数组指针指针与类成员函数&#xff08;成员函数指针&#xff09;智能指针&#xff08;unique_ptr, s…...

Java 8 非对称加密代码示例

以下是使用Java 8实现RSA非对称加密的完整代码示例&#xff0c;包括密钥生成、加密和解密过程。 1. 生成RSA密钥对 import java.security.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.Base64; impor…...

Linux环境基础与开发工具使用

1. Linux编译器vim 1.1 vim的基本概念讲解 vim有很多种模式&#xff0c;我们初学者常用的就是命令模式&#xff08;command mode&#xff09;、插入模式&#xff08;Insert mode&#xff09;和底行模式&#xff08;last line mode&#xff09;。 命令/正常模式(Normal mode) …...

【BUG】‘DetDataSample‘ object has no attribute ‘_gt_sem_seg‘

问题&#xff1a; 使用mmdetection框架使用COCO格式训练自定义数据集时&#xff0c;其中模型使用HTC模型时出现如下问题&#xff1a; AttributeError: ‘DetDataSample’ object has no attribute ‘_gt_sem_seg’. Did you mean: ‘gt_sem_seg’? results self(**data, mode…...

C# Winforms 本地化 多语言支持 字符串资源

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

ts bug 找不到模块或相应类型的声明,@符有红色波浪线

解决方法&#xff1a;在env.d.ts文件中添加以下代码&#xff0c;这段代码是一个 TypeScript 的声明文件&#xff0c;用于让 TypeScript 知道如何处理 Vue 单文件组件&#xff08;.vue 文件&#xff09;的导入。 /// <reference types"vite/client" /> // 声明…...

赛灵思 XCZU11EG-2FFVC1760I XilinxFPGAZynq UltraScale+ MPSoC EG

XCZU11EG-2FFVC1760I 是 Zynq UltraScale MPSoC EG 系列中性能最强的器件之一&#xff0c;集成了四核 ARM Cortex-A53 应用处理器、双核 Cortex-R5 实时处理器与 Mali-400 MP2 GPU&#xff0c;并结合了 653,100 个逻辑单元与丰富的片上存储资源&#xff0c;可满足高性能计算、A…...

VSCode|IDEA|PyCharm无缝接入DeepSeek R1实现AI编程

文章目录 前言一、流程简介1. 获取DeepSeek R1的API密钥2. 在编程软件中下载安装 Continue 插件**IDEA**PyCharm 3. 配置Continue文件 二、使用体验利用 DeepSeek R1进行 AI 编程 前言 本文将介绍如何在 VSCode|IDEA|PyCharm 软件中接入 DeepSeek R1 实现 AI 编程&#xff0c;…...

深入浅出 PostgreSQL:从历史演进到高阶优化技术

引言 PostgreSQL 是一个免费开源的对象关系型数据库&#xff0c;既支持传统的 SQL 查询&#xff0c;也支持 JSON 等非关系数据类型&#xff0c;因其高度可扩展性和社区活跃度&#xff0c;已成为众多互联网、金融和企业级应用的首选数据库 (Introduction to PostgreSQL - W3Sch…...

塔能水泵节能方案:精准驱动工厂能耗优化

在工厂的能源消耗体系中&#xff0c;水泵作为关键的动力设备&#xff0c;其运行效率直接关系到整体能耗水平。传统水泵在长期运行中&#xff0c;受设计局限、工艺成本约束等因素影响&#xff0c;普遍存在效率低下、能源浪费严重的问题。塔能科技针对这一痛点&#xff0c;推出了…...

SSCLMD模型代码实现详解

SSCLMD模型代码实现详解 1. 项目源码结构 SSCLMD项目的源码结构如下&#xff1a; SSCLMD-main/ ├── README.md ├── ST4.xlsx ├── Supplementary File.docx ├── code/ │ ├── calculating_similarity.py │ ├── data_preparation.py │ ├── data_…...

【coze】故事卡片(图片、音频、文字)

【coze】故事卡片&#xff08;图片、音频、文字&#xff09; 1、创建智能体2、添加人设与回复逻辑3、添加工作流&#xff08;1&#xff09;创建工作流&#xff08;2&#xff09;添加大模型节点&#xff08;3&#xff09;添加提示词优化节点&#xff08;4&#xff09;添加豆包图…...

限免开关实施版本保护措施,保证项目灰度发布安全

迭代用户限免权限校验业务 新增限免开关实现普通用户权益更新&#xff0c;实施版本保护措施&#xff0c;保证项目灰度发布安全&#xff1b; // 是否展示限免标识 func (t *BasePrivilegeService) IsPromotionFree(p consumParams) bool {// 限免开关isFreeUseOpen : p.cfg.Vip…...

C#中从本地(两个路径文件夹)中实时拿图显示到窗口中并接收(两个tcp发送的信号)转为字符串显示在窗体中实现检测可视化

多窗口源码 C#中从本地&#xff08;两个路径文件夹&#xff09;中实时拿图显示到窗口中并接收&#xff08;两个tcp发送的信号&#xff09;转为字符串显示在窗体中实现检测可视化资源-CSDN文库 读图结果展示 字符串结果展示 利用TCP调试工具创建两个tcp 再次启动程序 就链接…...

了解一下OceanBase中的表分区

OceanBase 是一个高性能的分布式关系型数据库&#xff0c;它支持 SQL 标准的大部分功能&#xff0c;包括分区表。分区表可以帮助管理大量数据&#xff0c;提高查询效率&#xff0c;通过将数据分散到不同的物理段中&#xff0c;可以减少查询时的数据扫描量。 在 OceanBase 中操…...

生成了一个AI算法

import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 1. 数据预处理 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) # MNIST单通道归一化 ]) train_da…...

C# 使用SunnyUI控件 (VS 2019)

前言&#xff1a;建议下载源码&#xff0c;源码中包含了各种控件的用法案例。 下载 帮助文档: 文档预览 - Gitee.comGitee: SunnyUI: SunnyUI.NET 是基于.NET Framework 4.0、.NET8、.NET9 框架的 C# WinForm UI、开源控件库、工具类库、扩展类库、多页面开发框架。GitHub: h…...

在 Win11 下安装 Wireshark 的详细步骤

目录 一、了解 Wireshark1. 作用和功能2. 使用步骤 二、下载安装包三、运行安装包四、使用 Wireshark1. 抓包2. 窗口介绍3. 过滤器&#xff08;显示 / 捕获过滤器&#xff09;4. 保存过滤后的报文1&#xff09;显示过滤器表达式2&#xff09;过滤表达式的规则 5. 封包列表6. 封…...

【AI提示词】六顶思考帽工具专家

提示说明 提供专业的六顶思考帽工具应用服务&#xff0c;帮助用户从多角度进行创新性问题解决。 提示词 # Role: 六顶思考帽工具专家## Profile - language: 中文 - description: 提供专业的六顶思考帽工具应用服务&#xff0c;帮助用户从多角度进行创新性问题解决 - backgr…...

解锁RAG:AI 2.0时代的“知识外挂”是如何炼成的?

——从原理到实战&#xff0c;揭秘检索增强生成如何颠覆传统AI 引言&#xff1a;当AI学会“开卷考试” 如果传统大模型是“闭卷学霸”&#xff0c;那RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;就是那个考试时带着“百科全书”的超级…...

使用 ANSYS SIwave 求解器在 ANSYS AEDT 中预测串行通道性能并生成眼图

PCB 仿真 如今&#xff0c;无线射频设备日益复杂&#xff0c;对大型复杂 PCB 设计进行准确、高效仿真的需求也随之增加。在设计流程的早期识别和预测潜在问题可以节省资源、时间和金钱。SIwave 可帮助您对现代高性能电子产品中典型的高速通道和完整的输电系统进行建模、仿真和…...

启发式算法-模拟退火算法

模拟退火算法是一种基于概率的启发式优化算法&#xff0c;用于解决大规模组合优化问题&#xff0c;其灵感来源于金属退火过程中的物理现象。其基本原理是从一个初始解开始&#xff0c;然后在当前解的邻域内随机生成一个新解&#xff0c;如果新解的目标函数值优于当前解&#xf…...

机器视觉框架源码——解读3(常用的资源和样式)

这是关于框架解读的第三篇文章,将结合理论和框架代码进行讲解。 WPF中的各类工件元素,都可以设置其样式,如: 字体(FontFamily) 字体大小(FontSize) 背景颜色(Backgroud) 字体颜色(Foreground) 边距(Margin) 水平位置(HorizontalAlignment) 垂直位置(VerticalAlignment) 而样…...

勒索病毒肆虐时代:数据库加密存储的实践指南

在2025年第一季度&#xff0c;全球勒索攻击损失突破150亿美元&#xff0c;某跨国制造企业因数据库未加密被勒索3000枚比特币&#xff0c;某省级医保系统遭攻击导致参保人信息泄露……当医疗数据、金融资产、知识产权成为黑客的提款机&#xff0c;数据库加密已从技术选项升级为生…...

next中的server comonent中如何共享session

在 Next.js 的服务器组件&#xff08;Server Components&#xff09;里共享会话&#xff08;session&#xff09;&#xff0c;可以借助第三方库&#xff08;如 next-auth 或 express-session 结合自定义 API 路由&#xff09;来实现&#xff0c;下面为你详细介绍这两种常见的实…...

Desfire Ev1\Ev2\Ev3卡DES\3K3DES\AES加解密读写VB.Net示例源码

本示例使用发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bSxJTb6&ftt&id917152255720 Public Class Form1Public Declare Function pcdbeep Lib "OUR_MIFARE.dll" (ByVal xms As Integer) As BytePublic Declare Fu…...

商业实战将归巢网内容构建为本地RAG模型的完整指南01-优雅草卓伊凡

商业实战将归巢网内容构建为本地RAG模型的完整指南01-优雅草卓伊凡 今天卓伊凡收到了老客户归巢网关于对本地RAG模型建立的咨询&#xff0c;这点也让卓伊凡得深入研究下&#xff0c;毕竟老客户肯定不是说着玩的&#xff0c;主要最终实现目的是建立模型开始使用AI智能问答。 一…...

langchain4j整合springboot

环境介绍 JDK17Spring Boot: 3.0.2 创建springboot工程 IDEA新建一个springboot项目&#xff0c;使用Spring lnitializr快速构建。 选择Spring Boot: 3.0.2以及Spring Web依赖 添加maven依赖 创建完springboot项目之后&#xff0c;在pom中添加关键依赖 <properties&g…...

在线时间戳转换工具

给大家推荐一个在线时间戳转换工具 点击跳转-鸽鸽在线工具 这个工具除了时间戳转换&#xff0c;到首页还能选择使用很多其他小工具&#xff0c;欢迎使用...