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

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.1 从零搭建NumPy环境:安装指南与初体验

在这里插入图片描述

1. 从零搭建NumPy环境:安装指南与初体验

NumPy核心能力图解(架构图)

NumPy 是 Python 中用于科学计算的核心库,它提供了高效的多维数组对象以及用于处理这些数组的各种操作。NumPy 的核心能力可以概括为以下几个方面:

  • 高效数组操作:NumPy 数组(ndarray)比 Python 列表更高效,支持向量化操作。
  • 数学函数:提供了丰富的数学函数,如三角函数、指数函数、对数函数等。
  • 线性代数:支持矩阵运算、特征值分解、奇异值分解等。
  • 随机数生成:提供了多种随机数生成器,用于模拟数据等。
  • 广播机制:支持不同形状的数组之间的运算。
  • 文件读写:支持多种文件格式的读写操作,如 .npy.npz 等。
  • 傅里叶变换:支持频域和时域之间的转换。
  • 集合操作:支持集合的交集、并集、差集等操作。

下面是 NumPy 的架构图:

NumPy
高效数组操作
数学函数
线性代数
随机数生成
广播机制
文件读写
傅里叶变换
集合操作
ndarray
向量化操作
三角函数
指数函数
对数函数
矩阵运算
特征值分解
奇异值分解
均匀分布
正态分布
泊松分布
不同形状数组运算
.npy 文件
.npz 文件
频域转换
时域转换
交集
并集
差集
Anaconda/Pip双环境安装指南(含版本选择建议)

NumPy 可以通过多种方式安装,其中最常用的两种方式是使用 Anaconda 和 Pip。下面我们将详细介绍这两种方式的安装步骤,并提供版本选择建议。

1.1 使用 Anaconda 安装 NumPy

步骤 1:下载 Anaconda

首先,访问 Anaconda 官方网站并下载最新版本的 Anaconda。Anaconda 为不同的操作系统提供了不同的安装包,确保选择与你当前操作系统相匹配的版本。

  • Windows:https://www.anaconda.com/products/distribution#download-section
  • Mac:https://www.anaconda.com/products/distribution#download-section
  • Linux:https://www.anaconda.com/products/distribution#download-section

步骤 2:安装 Anaconda

按照下载的安装包中的说明进行安装。安装过程中,建议选择默认选项,特别是将 Anaconda 添加到系统路径中。

步骤 3:创建并激活环境

打开 Anaconda Prompt(Windows)或终端(Mac/Linux),创建一个新的环境并激活它。

conda create -n numpy_env python=3.9  # 创建名为 numpy_env 的环境,并指定 Python 版本为 3.9
conda activate numpy_env             # 激活环境

步骤 4:安装 NumPy

在激活的环境中,使用以下命令安装 NumPy:

conda install numpy                  # 安装 NumPy
1.2 使用 Pip 安装 NumPy

步骤 1:安装 Python

确保你的系统已经安装了 Python。你可以从 Python 官方网站下载并安装最新版本的 Python。

  • Windows:https://www.python.org/downloads/windows/
  • Mac:https://www.python.org/downloads/macos/
  • Linux:大多数 Linux 发行版已经预装了 Python,如果没有,可以使用包管理器安装。

步骤 2:安装 Pip

大多数情况下,Python 安装时会自带 Pip。你可以通过以下命令检查 Pip 是否已安装:

python -m pip --version               # 检查 Pip 版本

如果没有安装,可以使用以下命令安装:

python -m ensurepip --upgrade          # 安装并升级 Pip

步骤 3:创建并激活虚拟环境

推荐使用虚拟环境来管理 Python 项目依赖。你可以使用 venv 模块创建虚拟环境。

python -m venv numpy_env              # 创建名为 numpy_env 的虚拟环境
source numpy_env/bin/activate          # 激活环境(Linux/Mac)
numpy_env\Scripts\activate             # 激活环境(Windows)

步骤 4:安装 NumPy

在激活的虚拟环境中,使用以下命令安装 NumPy:

pip install numpy                     # 安装 NumPy
三平台安装步骤对比表格
步骤AnacondaPip
1. 下载访问 Anaconda 官方网站下载安装包确保系统已安装 Python
2. 安装按照安装包说明进行安装从 Python 官方网站下载并安装
3. 创建环境conda create -n numpy_env python=3.9python -m venv numpy_env
4. 激活环境conda activate numpy_envsource numpy_env/bin/activate(Linux/Mac)
numpy_env\Scripts\activate(Windows)
5. 安装 NumPyconda install numpypip install numpy
验证安装的3种方法
1.3.1 终端命令验证

方法 1:检查 NumPy 版本

python -c "import numpy as np; print(np.__version__)"  # 检查 NumPy 版本

方法 2:列出已安装的包

conda list numpy  # 列出 Anaconda 环境中已安装的 NumPy 包
pip list | grep numpy  # 列出 Pip 环境中已安装的 NumPy 包
1.3.2 Python 代码验证

方法 3:运行简单的 NumPy 代码

import numpy as np# 创建一个 3x3 的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("创建的 3x3 数组:")
print(array)# 计算数组的平均值
mean_value = np.mean(array)
print("数组的平均值:", mean_value)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建一个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个二维列表,其中每个子列表代表数组的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("创建的 3x3 数组:")  # 打印数组
print(array)# 计算数组的平均值
# np.mean 是 NumPy 中用于计算平均值的函数
# 传入数组作为参数
mean_value = np.mean(array)
print("数组的平均值:", mean_value)  # 打印平均值
常见安装报错解决方案(附错误截图示例)

问题 1:Pip 安装时报错

错误示例:

ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)
ERROR: No matching distribution found for numpy

解决方案:

  1. 确保你的网络连接正常。

  2. 升级 Pip 到最新版本:

    pip install --upgrade pip
    
  3. 如果仍然报错,可以尝试使用国内的镜像源:

    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    

问题 2:Anaconda 安装时报错

错误示例:

Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.

解决方案:

  1. 重启 Anaconda Prompt 或终端。

  2. 清除缓存并重新安装:

    conda clean --all
    conda install numpy
    
  3. 如果仍然报错,可以尝试使用国内的镜像源:

    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda install numpy
    

问题 3:虚拟环境无法激活

错误示例:

source: command not found

解决方案:

  1. 确保你使用的是正确的激活命令。在 Windows 上使用 numpy_env\Scripts\activate,在 Linux/Mac 上使用 source numpy_env/bin/activate
  2. 检查虚拟环境目录是否存在,并且路径正确。
第一个NumPy程序:数组创建与基础运算
1.4.1 创建数组

NumPy 提供了多种创建数组的方法,包括从列表创建、从文件读取、随机生成等。下面我们将介绍最常见的几种方法。

1. 从列表创建数组

import numpy as np# 从列表创建一维数组
one_d_array = np.array([1, 2, 3, 4, 5])
print("一维数组:")
print(one_d_array)# 从列表创建二维数组
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:")
print(two_d_array)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 从列表创建一维数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个一维列表,创建一个一维数组
one_d_array = np.array([1, 2, 3, 4, 5])
print("一维数组:")  # 打印一维数组
print(one_d_array)# 从列表创建二维数组
# 传入一个二维列表,其中每个子列表代表数组的一行
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:")  # 打印二维数组
print(two_d_array)

2. 从文件读取数组

NumPy 支持从多种文件格式读取数组,最常用的是 .npy.npz 文件。

import numpy as np# 从 .npy 文件读取数组
array_from_npy = np.load('array.npy')
print("从 .npy 文件读取的数组:")
print(array_from_npy)# 从 .npz 文件读取数组
data = np.load('data.npz')
array1 = data['array1']
array2 = data['array2']
print("从 .npz 文件读取的数组1:")
print(array1)
print("从 .npz 文件读取的数组2:")
print(array2)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 从 .npy 文件读取数组
# np.load 是 NumPy 中用于从文件加载数组的函数
# 传入文件路径作为参数
array_from_npy = np.load('array.npy')
print("从 .npy 文件读取的数组:")  # 打印从 .npy 文件读取的数组
print(array_from_npy)# 从 .npz 文件读取数组
# .npz 文件可以存储多个数组
# 使用 np.load 读取 .npz 文件
data = np.load('data.npz')
# 通过键值访问存储在 .npz 文件中的数组
array1 = data['array1']
array2 = data['array2']
print("从 .npz 文件读取的数组1:")  # 打印数组1
print(array1)
print("从 .npz 文件读取的数组2:")  # 打印数组2
print(array2)

3. 随机生成数组

import numpy as np# 生成一个 3x3 的随机数组,元素值在 0 到 1 之间
random_array = np.random.rand(3, 3)
print("随机生成的 3x3 数组:")
print(random_array)# 生成一个 3x3 的随机整数数组,元素值在 1 到 10 之间
random_int_array = np.random.randint(1, 10, (3, 3))
print("随机生成的 3x3 整数数组:")
print(random_int_array)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 生成一个 3x3 的随机数组,元素值在 0 到 1 之间
# np.random.rand 是 NumPy 中用于生成随机数组的函数
# 传入数组的形状作为参数
random_array = np.random.rand(3, 3)
print("随机生成的 3x3 数组:")  # 打印随机数组
print(random_array)# 生成一个 3x3 的随机整数数组,元素值在 1 到 10 之间
# np.random.randint 是 NumPy 中用于生成随机整数数组的函数
# 传入最小值、最大值和数组形状作为参数
random_int_array = np.random.randint(1, 10, (3, 3))
print("随机生成的 3x3 整数数组:")  # 打印随机整数数组
print(random_int_array)
1.4.2 基础运算

NumPy 提供了丰富的数组运算功能,包括加法、减法、乘法、除法、矩阵乘法等。下面我们将介绍一些常见的基础运算。

1. 数组加法

import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的加法
sum_array = array1 + array2
print("数组加法:")
print(sum_array)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的加法
# NumPy 支持直接使用 + 运算符进行数组加法
sum_array = array1 + array2
print("数组加法:")  # 打印结果
print(sum_array)

2. 数组减法

import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的减法
diff_array = array1 - array2
print("数组减法:")
print(diff_array)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的减法
# NumPy 支持直接使用 - 运算符进行数组减法
diff_array = array1 - array2
print("数组减法:")  # 打印结果
print(diff_array)

3. 数组乘法

import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:")
print(elementwise_product)# 计算两个数组的矩阵乘法
matrix_product = np.dot(array1, array2)
print("矩阵乘法:")
print(matrix_product)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素乘法
# NumPy 支持直接使用 * 运算符进行数组的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:")  # 打印结果
print(elementwise_product)# 计算两个数组的矩阵乘法
# np.dot 是 NumPy 中用于计算矩阵乘法的函数
# 传入两个数组作为参数
matrix_product = np.dot(array1, array2)
print("矩阵乘法:")  # 打印结果
print(matrix_product)

4. 数组除法

import numpy as np# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:")
print(elementwise_division)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])# 计算两个数组的逐元素除法
# NumPy 支持直接使用 / 运算符进行数组的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:")  # 打印结果
print(elementwise_division)

5. 数组转置

import numpy as np# 创建一个 3x3 的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 计算数组的转置
transposed_array = array.T
print("数组转置:")
print(transposed_array)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建一个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 计算数组的转置
# .T 是 NumPy 数组的一个属性,用于获取数组的转置
transposed_array = array.T
print("数组转置:")  # 打印结果
print(transposed_array)

6. 数组重塑

import numpy as np# 创建一个 1x9 的数组
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])# 将数组重塑为 3x3 的数组
reshaped_array = array.reshape(3, 3)
print("重塑后的数组:")
print(reshaped_array)

注释:

# 导入 NumPy 库,并将其别名为 np
import numpy as np# 创建一个 1x9 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个一维列表
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])# 将数组重塑为 3x3 的数组
# .reshape 是 NumPy 数组的一个方法,用于改变数组的形状
# 传入新的形状作为参数
reshaped_array = array.reshape(3, 3)
print("重塑后的数组:")  # 打印结果
print(reshaped_array)
参考文献或资料
参考资料名称链接
NumPy 官方文档https://numpy.org/doc/
Anaconda 官方文档https://docs.anaconda.com/
Pip 官方文档https://pip.pypa.io/en/stable/
Python 官方文档https://docs.python.org/3/
NumPy 教程https://www.datacamp.com/community/tutorials/python-numpy-tutorial
NumPy 入门指南https://numpy.org/devdocs/user/quickstart.html
NumPy 环境搭建教程https://www.geeksforgeeks.org/how-to-install-numpy-on-windows/
NumPy 学习笔记https://www.jianshu.com/p/4e4d5c1e7e8b
NumPy 初学者教程https://github.com/rougier/numpy-100
NumPy 常见问题解答https://numpy.org/doc/stable/user/troubleshooting.html
NumPy 源码分析https://github.com/numpy/numpy
NumPy 速查表https://www.kaggle.com/learn/overview
NumPy 实战案例https://www.tensorflow.org/tutorials/quickstart/beginner
NumPy 书籍推荐https://www.springer.com/gp/book/9781484242452
NumPy 视频教程https://www.youtube.com/watch?v=QUT1VHiLmmI
NumPy 交互式学习https://colab.research.google.com/

希望这篇文章能帮助你成功地搭建 NumPy 环境并进行初体验。这篇文章包含了详细的原理介绍、代码示例、源码注释以及案例等。希望这对您有帮助。如果有任何问题请随私信或评论告诉我。

相关文章:

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.1 从零搭建NumPy环境:安装指南与初体验

1. 从零搭建NumPy环境:安装指南与初体验 NumPy核心能力图解(架构图) NumPy 是 Python 中用于科学计算的核心库,它提供了高效的多维数组对象以及用于处理这些数组的各种操作。NumPy 的核心能力可以概括为以下几个方面&#xff1a…...

PHP校园助手系统小程序

🔑 校园助手系统 —— 智慧校园生活 📱一款基于ThinkPHPUniapp框架深度定制的校园助手系统,犹如一把智慧之钥,专为校园团队精心打造,解锁智慧校园生活的无限精彩。它独家适配微信小程序,无需繁琐的下载与安…...

2_高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计

一、高并发内存池框架设计 高并发池框架设计,特别是针对内存池的设计,需要充分考虑多线程环境下: 性能问题锁竞争问题内存碎片问题 高并发内存池的整体框架设计旨在提高内存的申请和释放效率,减少锁竞争和内存碎片。 高并发内存…...

在线可编辑Excel

1. Handsontable 特点: 提供了类似 Excel 的表格编辑体验,包括单元格样式、公式计算、数据验证等功能。 支持多种插件,如筛选、排序、合并单元格等。 轻量级且易于集成到现有项目中。 具备强大的自定义能力,可以调整外观和行为…...

物业管理系统源码优化物业运营模式实现服务智能化与品质飞跃

内容概要 在当今快速发展且竞争激烈的市场环境中,物业管理面临着众多挑战,而“物业管理系统源码”的优化,无疑为解决这些问题提供了有效的途径。这些优化不仅提升了物业管理的效率,还实现了服务智能化,推动了物业运营…...

双足机器人开源项目

双足机器人(也称为人形机器人或仿人机器人)是一个复杂的领域,涉及机械设计、电子工程、控制理论、计算机视觉等多个学科。对于想要探索或开发双足机器人的开发者来说,有许多开源项目可以提供帮助。这些项目通常包括硬件设计文件、…...

第五部分:Linux中的gcc/g++以及gdb和makefile

目录 1、编译器gcc和g 1.1、预处理(进行宏替换) 1.2、编译(生成汇编) 1.3、汇编(生成机器可识别代码) 1.4、连接(生成可执行文件或库文件) 1.5、gcc编译器的使用 2、Linux调试器-gdb使用 2.1、debug…...

decison tree 决策树

熵 信息增益 信息增益描述的是在分叉过程中获得的熵减,信息增益即熵减。 熵减可以用来决定什么时候停止分叉,当熵减很小的时候你只是在不必要的增加树的深度,并且冒着过拟合的风险 决策树训练(构建)过程 离散值特征处理:One-Hot…...

GPU算力平台|在GPU算力平台部署AI虚拟换衣模型(CatVTON)的应用实战教程

文章目录 一、GPU算力服务平台概述智能资源分配优化的Kubernetes架构按需计费安全保障平台特色功能 二、平台账号注册流程AI虚拟换衣模型(CatVTON)的应用实战教程AI虚拟换衣模型(CatVTON)的介绍AI虚拟换衣模型(CatVTON)的部署步骤 一、GPU算力服务平台概述 蓝耘GPU算力平台专为…...

使用云服务器自建Zotero同步的WebDAV服务教程

Zotero 是一款广受欢迎的文献管理软件,其同步功能可以通过 WebDAV 实现文献附件的同步。相比 Zotero 官方提供的300MB免费存储服务,自建 WebDAV 服务具有存储空间大、成本低以及完全控制数据的优势。本文将详细介绍如何使用云服务器自建 WebDAV 服务&…...

单片机基础模块学习——按键

一、按键原理图 当把跳线帽J5放在右侧,属于独立按键模式(BTN模式),放在左侧为矩阵键盘模式(KBD模式) 整体结构是一端接地,一端接控制引脚 之前提到的都是使用了GPIO-准双向口的输出功能&#x…...

FlinkSql使用中rank/dense_rank函数报错空指针

问题描述 在flink1.16(甚至以前的版本)中,使用rank()或者dense_rank()进行排序时,某些场景会导致报错空指针NPE(NullPointerError) 报错内容如下 该报错没有行号/错误位置,无法排查 现状 目前已经确认为bug,根据github上的PR日…...

WPF基础 | WPF 基础概念全解析:布局、控件与事件

WPF基础 | WPF 基础概念全解析:布局、控件与事件 一、前言二、WPF 布局系统2.1 布局的重要性与基本原理2.2 常见布局面板2.3 布局的测量与排列过程 三、WPF 控件3.1 控件概述与分类3.2 常见控件的属性、方法与事件3.3 自定义控件 四、WPF 事件4.1 路由事件概述4.2 事…...

【AIGC学习笔记】扣子平台——精选有趣应用,探索无限可能

背景介绍: 由于近期业务发展的需求,我开始接触并深入了解了扣子平台的相关知识,并且通过官方教程自学了简易PE工作流搭建的技巧。恰逢周会需要准备与工作相关的分享主题,而我作为一个扣子平台的初学者,也想探索一下这…...

mock可视化生成前端代码

介绍:mock是我们前后端分离的必要一环、ts、axios编写起来也很麻烦。我们就可以使用以下插件,来解决我们的问题。目前支持vite和webpack。(配置超级简单!) 欢迎小伙伴们提issues、我们共建。提升我们的开发体验。 vi…...

csapp2.4节——浮点数

目录 二进制小数 十进制小数转二进制小数 IEEE浮点表示 规格化表示 非规格化表示 特殊值 舍入 浮点运算 二进制小数 类比十进制中的小数,可定义出二进制小数 例如1010.0101 小数点后的权重从-1开始递减。 十进制小数转二进制小数 整数部分使用辗转相除…...

Java面试题2025-Spring

讲师:邓澎波 Spring面试专题 1.Spring应该很熟悉吧?来介绍下你的Spring的理解 1.1 Spring的发展历程 先介绍Spring是怎么来的,发展中有哪些核心的节点,当前的最新版本是什么等 通过上图可以比较清晰的看到Spring的各个时间版本对…...

element tbas增加下拉框

使用Tabs 标签页的label插槽,嵌入Dropdown 下拉菜单,实现Tabs 标签页增加下拉切换功能 Tabs 标签页 tab-click"事件"(这个事件当中到拥有下拉框的tab里时,可以存一下Dropdown 第一个菜单的id,实现点击到拥有…...

Windows Defender添加排除项无权限的解决方法

目录 起因Windows Defender添加排除项无权限通过管理员终端添加排除项管理员身份运行打开PowerShell添加/移除排除项的命令 起因 博主在打软件补丁时,遇到 Windows Defender 一直拦截并删除文件,而在 Windows Defender 中无权限访问排除项。尝试通过管理…...

Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】

使用 BFG Repo-Cleaner 清除 Git 仓库中的敏感信息 1. 背景介绍 在使用 Git 进行版本控制时,有时会不小心将敏感信息(如 API 密钥、密码等)提交到仓库中。即使后续删除,这些信息仍然存在于 Git 的历史记录中。本文将介绍如何使用…...

贪心专题----

看了讲解,贪心似乎没有定式的解题方法,更多是按照常识来; 455. 分发饼干 将胃口和饼干尺寸 都排序; 然后遍历胃口,从饼干尺寸的最后一个开始。 这里为什么是遍历胃口? 当胃口大于饼干尺寸,…...

YOLOv8改进,YOLOv8检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等,全网独发

摘要 作者提出一种新的检测头,称为“动态头”,旨在将尺度感知、空间感知和任务感知统一在一起。如果我们将骨干网络的输出(即检测头的输入)视为一个三维张量,其维度为级别 空间 通道,这样的统一检测头可以看作是一个注意力学习问题,直观的解决方案是对该张量进行全自…...

LabVIEW项目中的工控机与普通电脑选择

工控机(Industrial PC)与普通电脑在硬件设计、性能要求、稳定性、环境适应性等方面存在显著差异。了解这些区别对于在LabVIEW项目中选择合适的硬件至关重要。下面将详细分析这两种设备的主要差异,并为LabVIEW项目中的选择提供指导。 ​ 硬件设…...

AI赋能医疗:智慧医疗系统源码与互联网医院APP的核心技术剖析

本篇文章,笔者将深入剖析智慧医疗系统的源码架构以及互联网医院APP背后的核心技术,探讨其在医疗行业中的应用价值。 一、智慧医疗系统的核心架构 智慧医疗系统是一个高度集成的信息化平台,主要涵盖数据采集、智能分析、决策支持、远程医疗等…...

一文详解Filter类源码和应用

背景 在日常开发中,经常会有需要统一对请求做一些处理,常见的比如记录日志、权限安全控制、响应处理等。此时,ServletApi中的Filter类,就可以很方便的实现上述效果。 Filter类 是一个接口,属于 Java Servlet API 的一部…...

Spring Boot - 数据库集成03 - 集成Mybatis

Spring boot集成Mybatis 文章目录 Spring boot集成Mybatis一:基础知识1:什么是MyBatis2:为什么说MyBatis是半自动ORM3:MyBatis栈技术演进3.1:JDBC,自行封装JDBCUtil3.2:IBatis3.3:My…...

力扣算法题——202.快乐数【系统讲解】

目录 💕1.题目 💕2.解析思路 本题思路总览 借助 “环” 的概念探索规律 从规律到代码实现的转化 快慢指针的具体实现 代码整体流程 💕3.代码实现 💕4.完结 二十七步也能走完逆流河吗 💕1.题目 💕2.解…...

求阶乘(信息学奥赛一本通-2019)

【题目描述】 利用for循环求n!的值。 提示&#xff0c;n!12...n。 【输入】 输入一个正整数n。 【输出】 输出n!的值。 【输入样例】 4 【输出样例】 24 【提示】 【数据规模及约定】 对于所有数据&#xff0c;1≤n≤20。 【题解代码】 #include<iostream> using namesp…...

【含代码】逆向获取 webpack chunk 下的__webpack_require__ 函数,获悉所有的模块以及模块下的函数

背景 Webpack 打包后的代码是不会直接暴露 __webpack_require__ 函数&#xff0c;目的是为了避免污染全局变量同时也为了保护 webpack 的打包后的模块都隐藏在闭包函数里&#xff0c;达到数据的安全性。 而有时我们为了测试某个函数&#xff0c;想直接获取这个内置函数&#…...

图生3d算法学习笔记

目录 hunyuan3d 2 stable-point-aware-3d hunyuan3d 2 https://github.com/Tencent/Hunyuan3D-2/tree/main/hy3dgen stable-point-aware-3d GitHub - Stability-AI/stable-point-aware-3d: SPAR3D: Stable Point-Aware Reconstruction of 3D Objects from Single Images...

WebSocket 心跳机制:确保连接稳定与实时性

目录 前言 什么是 WebSocket 心跳机制&#xff1f; WebSocket 心跳机制的实现 关键代码如下&#xff1a; WebSocket 心跳机制的应用场景 WebSocket 心跳机制的优势 WebSocket 心跳机制的注意事项 前言 WebSocket 是一种基于持久连接的协议&#xff0c;它支持全双工通信&…...

[SUCTF 2018]MultiSQL1

进去题目页面如下 发现可能注入点只有登录和注册,那么我们先注册一个用户&#xff0c;发现跳转到了/user/user.php&#xff0c; 查看用户信息,发现有传参/user/user.php?id1 用?id1 and 11,和?id1 and 12,判断为数字型注入 原本以为是简单的数字型注入&#xff0c;看到大…...

数据结构——AVL树的实现

Hello&#xff0c;大家好&#xff0c;这一篇博客我们来讲解一下数据结构中的AVL树这一部分的内容&#xff0c;AVL树属于是数据结构的一部分&#xff0c;顾名思义&#xff0c;AVL树是一棵特殊的搜索二叉树&#xff0c;我们接下来要讲的这篇博客是建立在了解搜索二叉树这个知识点…...

Kubernetes可视化界面

DashBoard Kubernetes Dashboard 是 Kubernetes 集群的一个开箱即用的 Web UI&#xff0c;提供了一种图形化的方式来管理和监视 Kubernetes 集群中的资源。它允许用户直接在浏览器中执行许多常见的 Kubernetes 管理任务&#xff0c;如部署应用、监控应用状态、执行故障排查以及…...

flutter_学习记录_00_环境搭建

1.参考文档 Mac端Flutter的环境配置看这一篇就够了 flutter的中文官方文档 2. 本人环境搭建的背景 本人的电脑的是Mac的&#xff0c;iOS开发&#xff0c;所以iOS开发环境本身是可用的&#xff1b;外加Mac电脑本身就会配置Java的环境。所以&#xff0c;后面剩下的就是&#x…...

【React】PureComponent 和 Component 的区别

前言 在 React 中&#xff0c;PureComponent 和 Component 都是用于创建组件的基类&#xff0c;但它们有一个主要的区别&#xff1a;PureComponent 会给类组件默认加一个shouldComponentUpdate周期函数。在此周期函数中&#xff0c;它对props 和 state (新老的属性/状态)会做一…...

vim如何设置制表符表示的空格数量

:set tabstop4 设置制表符表示的空格数量 制表符就是tab键&#xff0c;一般默认是四个空格的数量 示例&#xff1a; &#xff08;vim如何使设置制表符表示的空格数量永久生效&#xff1a;vim如何使相关设置永久生效-CSDN博客&#xff09;...

Python中程序流程的控制

本篇我们将介绍程序流程控制方面的内容&#xff0c;了解如何控制程序的流程&#xff0c;使得程序具有“判断能力”, 能够像人脑一样分析问题。在Python中&#xff0c;程序流程的控制主要通过以下几种方式实现&#xff1a; 分支语句 前言&#xff1a;我很熟悉分支语句&#xf…...

基于聚类与相关性分析对马来西亚房价数据进行分析

碎碎念&#xff1a;由于最近太忙了&#xff0c;更新的比较慢&#xff0c;提前祝大家新春快乐&#xff0c;万事如意&#xff01;本数据集的下载地址&#xff0c;读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析&#xff0c;探索各州的房产市…...

【例51.3】 平移数据

题目描述 将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。 输入 第一行为数组a的元素个数&#xff1b; 第二行为n个小于1000的正整数。 输出 平移后的数组元素&#xff0c;每个数用一个空格隔开。 样例输入 复制 10 1 2 3 4 5 6 7 8 9 10 样例输出 复…...

【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)

文章目录 前言一、InputAction简介1、InputAction是什么&#xff1f;2、示例 二、监听事件started 、performed 、canceled1、启用输入检测2、操作监听相关3、关键参数 CallbackContext4、结果 三、InputAction参数相关1、点击齿轮1.1 Actions 动作&#xff08;1&#xff09;动…...

Alfresco Content Services docker自动化部署操作

Alfresco Content Services docker部署文档 前提条件 在开始之前&#xff0c;需要确保已经安装了 Docker 和 Docker Compose。Docker 用于创建和管理容器&#xff0c;Docker Compose 则用于定义和运行多容器的 Docker 应用。 步骤 1. 创建目录结构 首先&#xff0c;创建一个…...

侧边导航(Semi Design)

根据前几次的导航栏设计&#xff0c;从最简单的三行导航栏到后面响应式的导航栏&#xff0c;其实可以在这个的基础上慢慢优化&#xff0c;就可以得到一个日常使用设计的导航栏。设计步骤也和之前的类似。 一、实现步骤 1、先下载安装好npm install douyinfe/semi-icons 2、引…...

Ubuntu下让matplotlib显示中文字体

文章目录 安装中文字体显示matplotlib库的字体文件夹删除matplotlib 的缓存文件&#xff08;可选&#xff09; matplotlib中设置字体&#xff0c;显示&#xff01; 参考文章&#xff1a; https://zodiac911.github.io/blog/matplotlib-chinese.html Ubuntu下python的matplotli…...

Linux 磁盘管理

Linux 磁盘管理 引言 磁盘管理是操作系统管理中的一项重要内容,对于Linux系统而言,磁盘管理更是基础中的基础。随着数据量的不断增加,合理地管理和利用磁盘资源显得尤为重要。本文将详细介绍Linux磁盘管理的基本概念、工具和策略,旨在帮助Linux用户和系统管理员更好地掌握…...

解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题

操作系统&#xff1a;CentOS 9 Zabbix版本&#xff1a;Zabbix7.2 问题描述&#xff1a;主机图形中文字符乱码 解决方案&#xff1a; # 安装字体配置和中文语言包 sudo yum install -y fontconfig langpacks-zh_CN.noarch # 检查是否已有中文字体&#xff1a; fc-list :lan…...

Spring MVC (三) —— 实战演练

项目设计 我们会将前端的代码放入 static 包下&#xff1a; 高内聚&#xff0c;低耦合 这是我们在实现项目的设计思想&#xff0c;一个项目里存在很多个模块&#xff0c;每一个模块内部的要求类与类、方法与方法要相互配合紧密联系&#xff0c;这就是高内聚&#xff0c;低耦合…...

地下排水管道损害缺陷检测数据集VOC+YOLO格式2051张6类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2051 标注数量(xml文件个数)&#xff1a;2051 标注数量(txt文件个数)&#xff1a;2051 …...

读写和解析简单的 nc 文件

NetCDF 文件格式在气象数据工程领域占据着举足轻重的地位&#xff0c;其结构灵活、强兼容性等优势使其成为该领域的一个标准。无论是从事学术研究还是工程实践&#xff0c;掌握这种数据格式变得越发重要。其次&#xff0c;我注意到目前社区中气象编程大多数课程都聚焦于某个特定…...

【北京大学 凸优化】Lec1 凸优化问题定义

【北京大学 凸优化】Lec1 凸优化问题定义 前言优化问题的分类连续优化问题离散优化问题组合优化问题变分&#xff08;Variational&#xff09;优化问题基于限制条件的分类基于凸性的分类 前言 马上快要过年了&#xff0c;天气自然寒冷起来&#xff0c;空气中也理所当然的弥漫着…...