news 2026/4/16 16:27:17

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/4/16 3:08:18

轻量高效多模态模型落地指南|基于AutoGLM-Phone-9B的技术演进

轻量高效多模态模型落地指南|基于AutoGLM-Phone-9B的技术演进 1. 引言:移动端多模态推理的挑战与机遇 随着AI大模型在视觉、语音、文本等多模态任务中的广泛应用,如何将高性能模型部署到资源受限的移动设备上,成为工业界和学术界…

作者头像 李华
网站建设 2026/4/16 15:32:41

GLM-4.6V-Flash-WEB如何接入?API调用步骤详解

GLM-4.6V-Flash-WEB如何接入?API调用步骤详解 智谱最新开源,视觉大模型。 1. 技术背景与核心价值 1.1 视觉大模型的演进趋势 近年来,多模态大模型在图文理解、视觉问答(VQA)、图像描述生成等任务中展现出强大能力。传…

作者头像 李华
网站建设 2026/4/16 14:33:07

BLE 协议的基础,必须搞明白的一个概念, 625μs 时隙详解

在 BLE 协议中,625μs 是一个核心的基本时间单位,被定义为 1个时隙(Slot),所有广播、扫描、连接的时序参数(如广播间隔、扫描间隔、连接间隔)都必须是这个时隙的整数倍,不允许出现小…

作者头像 李华
网站建设 2026/4/16 14:30:05

StructBERT中文情感分析镜像发布|CPU友好+开箱即用

StructBERT中文情感分析镜像发布|CPU友好开箱即用 1. 背景与需求:为什么需要轻量化的中文情感分析服务? 在自然语言处理(NLP)的实际应用中,情感分析是企业级场景中最常见的任务之一。无论是用户评论、客服…

作者头像 李华
网站建设 2026/4/16 13:23:51

多语言混合翻译难题怎么破?HY-MT1.5大模型给出答案

多语言混合翻译难题怎么破?HY-MT1.5大模型给出答案 在跨语言交流日益频繁的今天,用户对翻译质量的要求已从“能看懂”升级为“精准、自然、上下文一致”。然而,现实中的文本往往充满挑战:中英夹杂的技术文档、带格式标记的网页内…

作者头像 李华