news 2026/6/15 4:13:09

11.1 NumPy 简介与核心概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
11.1 NumPy 简介与核心概念

文章目录

  • 前言
  • 一、简介
    • 1.1 历史背景
    • 1.2 核心功能
    • 1.3 技术生态
    • 1.4 环境配置
  • 二、Ndarray 对象
    • 2.1 基本概念
    • 2.2 创建数组
    • 2.3 构造函数参数
  • 三、数据类型系统
    • 3.1 标量数据类型
    • 3.2 数据类型对象(dtype)
    • 3.3 结构化类型的字段信息
  • 四、数组属性与操作
    • 4.1 形状操作
    • 4.2 索引与切片
  • 五、广播机制
    • 5.1 广播规则
    • 5.2 数组迭代
  • 六、数组操作分类
    • 6.1 修改形状
    • 6.2 连接与分割
    • 6.3 添加/删除元素
  • 七、数学运算
    • 7.1 基本算术
    • 7.2 三角函数与舍入
    • 7.3 统计函数
  • 八、排序与搜索
    • 8.1 排序算法比较
    • 8.2 线性代数
  • 九、数据可视化(Matplotlib 集成)
    • 9.1 基本绘图
    • 9.2 直方图
  • 十、字符串与位操作
    • 10.1 字符串函数
    • 10.2 位操作
  • 总结

前言

NumPy(Numerical Python)是一个功能强大的 Python 库,主要用于科学计算。它提供了一个高性能的多维数组对象(ndarray)以及用于操作这些数组的大量工具函数。


一、简介

1.1 历史背景

NumPy 的发展历程:
Numeric:由 Jim Hugunin 开发,是 NumPy 的前身
Numarray:另一个包含额外功能的数值计算包
2005年:Travis Oliphant 将 Numarray 功能整合到 Numeric 中,创建了 NumPy
开源项目:拥有来自全球的众多贡献者

1.2 核心功能

NumPy 主要提供以下功能:
多维数组操作:高效的数组算术和逻辑运算
数学函数:傅里叶变换、线性代数运算、随机数生成
科学计算基础:与 SciPy、Matplotlib 等库协同工作

1.3 技术生态

NumPy 通常与以下库一起使用:
SciPy:科学计算扩展
Matplotlib:数据可视化
这种组合构成了强大的科学计算平台,常被用作 MATLAB 的替代方案

1.4 环境配置

安装方法

bash# 使用 pip 安装pipinstallnumpy# 或使用科学计算发行版(推荐初学者)# Anaconda 或 Miniconda 已包含完整科学计算栈

在线环境
官方推荐:TutorialsPoint CodingGround
优势:无需本地安装,可直接尝试示例代码

二、Ndarray 对象

2.1 基本概念

ndarray 是 NumPy 的核心对象,具有以下特点:
N 维同类型数据容器
零基索引访问
内存中连续存储
固定大小的数据类型(dtype)

2.2 创建数组

pythonimportnumpyasnp# 从列表创建arr1=np.array([1,2,3])# 多维数组arr2=np.array([[1,2],[3,4]])# 指定维数arr3=np.array([1,2,3,4,5],ndmin=2)# 指定数据类型arr4=np.array([1,2,3],dtype=complex)

2.3 构造函数参数

python numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)
参数说明
object数组数据源(列表、元组等)
dtype数组元素类型
copy是否创建副本
order内存布局('C’行优先/'F’列优先)
subok是否允许子类
ndmin最小维度数

三、数据类型系统

3.1 标量数据类型

NumPy 支持比 Python 更丰富的数值类型:

类型描述范围/特征
bool布尔值True/False
int8/int16/int32/int64有符号整数8/16/32/64位
uint8/uint16/uint32/uint64无符号整数8/16/32/64位
float16/float32/float64浮点数半/单/双精度
complex64/complex128复数实部虚部分别为32/64位浮点

3.2 数据类型对象(dtype)

dtype 对象描述如何解释内存块:
数据类型(整数、浮点等)
数据大小(字节数)
字节序(大端/小端)

3.3 结构化类型的字段信息

python# 创建 dtype 对象dt1=np.dtype(np.int32)dt2=np.dtype('i4')# 使用类型代码dt3=np.dtype('>i4')# 大端字节序# 结构化数据类型student_dtype=np.dtype([('name','S20'),# 字符串,20字节('age','i1'),# 1字节整数('marks','f4')# 4字节浮点])# 应用结构化类型students=np.array([('Alice',20,85.5),('Bob',22,92.0)],dtype=student_dtype)

四、数组属性与操作

4.1 形状操作

python# 查看形状arr=np.array([[1,2,3],[4,5,6]])print(arr.shape)# 输出: (2, 3)# 重塑形状reshaped=arr.reshape(3,2)# 展平数组flattened=arr.flatten()# 返回副本raveled=arr.ravel()# 返回视图(可能)

4.2 索引与切片

python# 基础切片arr=np.arange(10)print(arr[2:7:2])# [2 4 6]# 多维切片arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])print(arr2d[1:3,1:3])# [[5 6] [8 9]]# 高级索引(整数)rows=np.array([0,1,2])cols=np.array([0,1,0])print(arr2d[rows,cols])# [1 5 7]# 布尔索引print(arr2d[arr2d>5])# [6 7 8 9]

五、广播机制

5.1 广播规则

广播允许不同形状数组进行算术运算:
维度较小的数组在前面补 1
输出数组每个维度的大小是输入数组该维度大小的最大值
输入数组的某个维度大小为 1 时,可沿该维度扩展

python# 示例:向量与标量运算a=np.array([1,2,3])b=np.array([10,20,30])c=a*b# 对应元素相乘

5.2 数组迭代

python# 使用 nditer 迭代arr=np.arange(0,60,5).reshape(3,4)forelementinnp.nditer(arr):print(element,end=' ')

六、数组操作分类

6.1 修改形状

函数描述
reshape改变数组形状而不改变数据
flat数组的一维迭代器
flatten返回展平后的数组副本
ravel返回展平后的数组视图

6.2 连接与分割

类别函数描述
连接concatenate沿现有轴连接数组
连接stack沿新轴堆叠数组
连接hstack/vstack水平/垂直堆叠
分割split将数组分割为多个子数组
分割hsplit/vsplit水平/垂直分割

6.3 添加/删除元素

函数描述
resize改变数组形状(可修改大小)
append在数组末尾添加值
insert在指定位置插入值
delete删除指定位置的元素
unique返回数组的唯一值

七、数学运算

7.1 基本算术

python a=np.array([[1,2],[3,4]])b=np.array([[5,6],[7,8]])# 逐元素运算print(np.add(a,b))# 加法print(np.subtract(a,b))# 减法print(np.multiply(a,b))# 乘法print(np.divide(a,b))# 除法

7.2 三角函数与舍入

python# 三角函数(弧度制)angles=np.array([0,np.pi/2,np.pi])print(np.sin(angles))# 舍入arr=np.array([1.234,2.567,3.891])print(np.around(arr,2))# 保留两位小数

7.3 统计函数

函数描述
amin/amax最小值/最大值
ptp极差(最大值-最小值)
percentile百分位数
median中位数
mean算术平均数
average加权平均数
std标准差
var方差

八、排序与搜索

8.1 排序算法比较

算法速度最坏情况稳定性
quicksort最快O(n²)不稳定
mergesort中等O(n log n)稳定
heapsort较慢O(n log n)不稳定
python# 排序示例arr=np.array([[3,7],[9,1]])print(np.sort(arr))# 默认按行排序print(np.sort(arr,axis=0))# 按列排序# 结构化数组排序dtype=[('name','S10'),('age',int)]data=np.array([('Alice',25),('Bob',20)],dtype=dtype)print(np.sort(data,order='name'))# 按姓名排序

8.2 线性代数

python# 矩阵运算a=np.array([[1,2],[3,4]])b=np.array([[5,6],[7,8]])print(np.dot(a,b))# 矩阵乘法print(np.linalg.det(a))# 行列式print(np.linalg.inv(a))# 逆矩阵

九、数据可视化(Matplotlib 集成)

9.1 基本绘图

pythonimportnumpyasnpimportmatplotlib.pyplotasplt# 线性图x=np.arange(1,11)y=2*x+5plt.plot(x,y)plt.show()# 散点图plt.plot(x,y,'ob')# 蓝色圆点plt.show()# 子图x=np.arange(0,3*np.pi,0.1)y_sin=np.sin(x)y_cos=np.cos(x)plt.subplot(2,1,1)plt.plot(x,y_sin)plt.title('Sine')plt.subplot(2,1,2)plt.plot(x,y_cos)plt.title('Cosine')plt.show()

9.2 直方图

python# 数据分布可视化data=np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])plt.hist(data,bins=[0,20,40,60,80,100])plt.title("Histogram")plt.show()

十、字符串与位操作

10.1 字符串函数

python# 向量化字符串操作arr=np.array(['hello','world'])print(np.char.add(arr,'!'))# 添加后缀print(np.char.multiply(arr,3))# 重复字符串print(np.char.upper(arr))# 转为大写

10.2 位操作

python# 位运算a,b=13,17print(np.bitwise_and(a,b))# 位与print(np.bitwise_or(a,b))# 位或print(np.left_shift(a,2))# 左移

总结

NumPy 作为 Python 科学计算的基石,其高效的多维数组操作和丰富的数学函数库使其成为数据科学、机器学习、工程计算等领域的必备工具。通过掌握 NumPy 的核心概念和常用操作,可以显著提升科学计算的效率和代码质量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 16:29:20

告别云端依赖!HY-MT1.5本地化部署实现安全可控翻译

告别云端依赖!HY-MT1.5本地化部署实现安全可控翻译 随着全球化进程加速,企业对多语言内容处理的需求日益增长。然而,依赖云端API的机器翻译方案在数据隐私、响应延迟和定制化能力方面存在明显短板。腾讯开源的混元翻译大模型 HY-MT1.5 系列&…

作者头像 李华
网站建设 2026/6/15 14:11:40

10分钟实现中文情感分析|基于StructBERT镜像快速部署

10分钟实现中文情感分析|基于StructBERT镜像快速部署 1. 业务场景与技术痛点 在当前的互联网产品生态中,用户评论、客服对话、社交媒体内容等文本数据呈爆炸式增长。企业亟需一种高效、准确、低成本的方式对中文文本进行情绪倾向判断,以支持…

作者头像 李华
网站建设 2026/6/15 14:18:39

一句话理解pyside6的信号和槽机制

通俗的讲:pyside6 信号其实就是指发生了什么,槽就是在接收到这个信号后要做什么。 PySide6 的信号按控件类型分类,不同控件有专属的核心信号,同时也有一些通用信号适用于所有控件。 下面我会按 “通用信号 常用控件专属信号” …

作者头像 李华
网站建设 2026/6/15 13:56:39

35.轴承滚珠检测

1.根据图中绿色线条覆盖的所有滚珠中心拟合出Circle3,找到图中所有滚珠,如果滚珠的数量小于15为红色,反之为绿色 2.计算滚珠到圆1的距离,显示最大值与最小值,如果最小值小于像素80,物料NG,反之物料OK,判断Circle4的有无 3.计算各个圆的半径以及相邻两个圆的半径差,最…

作者头像 李华
网站建设 2026/6/15 13:53:36

云原生部署(AWS/Azure)

1.云原生部署(AWS/Azure) 云原生部署是指利用云计算平台的弹性、可扩展性和自动化能力,以容器化、微服务、持续交付、DevOps 和动态编排(如 Kubernetes)为核心构建和运行应用。在 AWS 和 Azure 上进行云原生部署&…

作者头像 李华