news 2026/10/4 18:12:27

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/10/4 7:55:17

开箱即用的中文情感分析方案|StructBERT镜像集成WebUI与API

开箱即用的中文情感分析方案|StructBERT镜像集成WebUI与API 1. 背景与需求:为什么需要轻量级中文情感分析? 在自然语言处理(NLP)的实际应用中,情感分析是企业洞察用户反馈、监控舆情、优化服务体验的核心…

作者头像 李华
网站建设 2026/10/4 7:55:03

32 位浮点数(IEEE 754 单精度)数轴分布技术文档

目录 1. 文档概述 2. 核心定义与格式 2.1 IEEE 754 单精度浮点数结构 2.2 数值表示公式 3. 数轴分布核心特性 3.1 整体分布规律 3.2 关键区间分布说明 3.3 直观示例 4. 编程指导意见 4.1 精度控制建议 4.2 边界值处理 4.3 性能与精度权衡 5. 常见问题与解决方案 6…

作者头像 李华
网站建设 2026/10/4 7:55:04

如何高效运行AutoGLM-Phone-9B?一文掌握本地部署全流程

如何高效运行AutoGLM-Phone-9B?一文掌握本地部署全流程 随着多模态大模型在移动端的广泛应用,轻量化、高效率的推理能力成为关键需求。AutoGLM-Phone-9B 作为一款专为移动设备优化的90亿参数多模态大语言模型,融合了文本、语音与视觉处理能力…

作者头像 李华
网站建设 2026/10/4 7:55:04

分类模型压测工具:云端GPU模拟百万QPS,成本可控

分类模型压测工具:云端GPU模拟百万QPS,成本可控 引言 作为技术负责人,你是否遇到过这样的困境:系统上线前需要验证承载能力,但本地测试环境根本无法模拟真实的高并发场景?传统的压测工具要么性能不足&…

作者头像 李华
网站建设 2026/10/4 7:55:04

IP静态是什么意思?静态IP适用于哪些业务场景?

1 什么是IP静态?“IP静态”,指的是不会随时间或网络重连而发生变化的固定IP地址,也被称为“静态IP”或“固定IP”。 相对地,普通用户使用的多是“动态IP”,每次拨号或断网重连后IP都会变动。在网络业务中,I…

作者头像 李华
网站建设 2026/10/5 9:25:40

AI万能分类器实战:10分钟部署完成商品分类

AI万能分类器实战:10分钟部署完成商品分类 引言:电商运营的AI分类神器 作为一名电商运营人员,你是否经常遇到这样的困扰:每天上新几十款商品,手动分类耗时耗力;IT部门排期要等一个月,而市场机…

作者头像 李华