讲师中心 微信公众号
AI工具推荐 视频效率加速

Python怎么使用NumPy库_NumPy数组操作教程一览

老芳大大_8599

老芳大大_8599

发布时间:2025-08-27 16:11:01

|

573人浏览过

|

来源于php中文网

原创

NumPy是Python科学计算的核心库,提供高性能多维数组ndarray及向量化操作工具。通过import numpy as np导入后,可使用np.array()、np.zeros()、np.ones()、np.linspace()等函数创建数组,相比Python列表,ndarray存储同类型数据,内存连续,计算效率更高。支持元素级运算、广播机制、布尔索引和reshape等形状操作,聚合函数如sum、mean可沿指定轴计算,linalg模块支持矩阵运算,广泛应用于数据分析与机器学习。

python怎么使用numpy库_numpy数组操作教程一览

NumPy是Python进行科学计算的核心库,它提供了一个高性能的多维数组对象(ndarray)以及用于处理这些数组的工具。简单来说,如果你想在Python里高效地处理大量数值数据,尤其是进行向量化操作,NumPy几乎是不可或缺的选择。它让复杂的数学运算变得简洁而快速。

要使用NumPy,第一步自然是导入它:

import numpy as np
。这几乎是所有使用NumPy代码的开端,
np
是约定俗成的别名。NumPy的核心是
ndarray
对象,它与Python自带的列表(list)有本质区别。列表可以存储不同类型的数据,而
ndarray
则要求所有元素都是同一种类型,这正是其高效性能的基石。

我们通常通过几种方式创建NumPy数组。最直接的是从Python列表转换:

arr = np.array([1, 2, 3, 4])
。但更常见且高效的做法是使用NumPy自带的创建函数,比如
np.zeros((3, 4))
会创建一个3x4的全零数组,
np.ones((2, 2))
是全一数组,
np.arange(0, 10, 2)
则能生成一个等差数列。我个人特别喜欢
np.linspace(0, 1, 5)
,它能在指定区间内均匀生成固定数量的样本点,对于绘制函数曲线或模拟数据非常有用。

一旦有了数组,操作就变得非常直观。NumPy支持元素级的数学运算,这意味着你可以直接对整个数组进行加减乘除,而不需要写循环。例如,

arr * 2
会将数组中每个元素都乘以2。这种向量化操作是NumPy性能的秘密武器,它在底层是用C或Fortran实现的,速度远超Python的循环。

立即学习“Python免费学习笔记(深入)”;

索引和切片也与Python列表类似,但功能更强大。你可以用

arr[0]
访问第一个元素,用
arr[1:3]
进行切片。对于多维数组,比如
matrix = np.array([[1, 2, 3], [4, 5, 6]])
,你可以用
matrix[0, 1]
访问第一行第二列的元素。更酷的是布尔索引,比如
arr[arr > 5]
会返回所有大于5的元素,这在数据筛选时简直是神来之笔。

数组的形状(shape)操作也是日常。

arr.shape
会告诉你数组的维度,
arr.reshape((new_rows, new_cols))
能改变数组的形状,但总元素数量必须保持不变。需要注意的是,
reshape
通常返回一个新视图,而不是修改原数组,这在处理大型数据集时需要留意,以免意外修改数据。

NumPy数组与Python列表:性能与用途的深层考量

我们经常会遇到一个问题:既然Python有列表,为什么还需要NumPy数组?这其实是效率和功能定位的根本区别。Python列表在设计上是为了通用性,它可以存储任何类型的对象,并且大小是动态变化的。这种灵活性是以牺牲性能为代价的。当你处理几十万、上百万甚至上亿的数值数据时,Python列表的迭代和计算会变得异常缓慢,内存占用也高得惊人。

NumPy数组则完全不同。它的核心是一个固定大小、同质类型元素的连续内存块。这意味着数据存储更紧凑,处理器可以更高效地访问和操作这些数据。这种“同质性”是关键,它允许NumPy在底层使用高度优化的C/Fortran代码来执行向量化操作,比如矩阵乘法、元素级运算等,其速度比Python的for循环快上几十甚至几百倍。

从用途上看,Python列表更适合存储异构数据集合,比如一个包含字符串、数字、对象混合的购物车列表。而NumPy数组则专注于数值计算,是科学计算、数据分析、机器学习领域的基础。无论是处理图像像素、音频信号、股票数据,还是训练神经网络,NumPy都提供了坚实而高效的底层支持。可以说,没有NumPy,Python在科学计算领域的地位会大打折扣。所以,不是说谁取代谁,而是它们各司其职,相辅相成。

掌握NumPy数组的创建技巧:从基础到进阶

创建NumPy数组远不止从Python列表转换那么简单。了解不同的创建方法,可以让我们更灵活、更高效地生成所需的数据结构。除了

np.array()
,还有一些非常常用的函数。

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载

比如,

np.zeros(shape)
和
np.ones(shape)
是初始化全零或全一数组的利器,它们接受一个表示形状的元组。如果你需要一个填充了某个特定值的数组,
np.full(shape, fill_value)
就派上用场了。

对于序列数据,

np.arange(start, stop, step)
类似于Python的
range()
,但它返回的是NumPy数组。而
np.linspace(start, stop, num)
则更适合在指定范围内生成等间隔的数字,例如在0到10之间生成50个点,
np.linspace(0, 10, 50)
,这在数据可视化和函数采样中极其方便。

随机数生成也是NumPy的强项。

np.random.rand(d0, d1, ...)
可以生成[0, 1)区间的均匀分布随机数,而
np.random.randn(d0, d1, ...)
则生成标准正态分布(均值为0,方差为1)的随机数。如果你需要指定范围内的整数,
np.random.randint(low, high, size)
是首选。这些随机数生成器在模拟、机器学习模型初始化等方面有着广泛应用。

此外,还有

np.empty(shape)
,它创建一个未初始化的数组,里面的值是内存中原有的任意值,这在某些对性能要求极致的场景下,可以稍微快一点,因为它省去了初始化的开销,但使用时要确保后续会立即填充数据。

理解这些创建函数,能让我们在面对不同的数据初始化需求时,选择最合适、最有效的方法,避免不必要的性能损耗。

NumPy数组的高级操作:广播、聚合与线性代数

NumPy的魅力不仅在于基本的创建和索引,更在于它提供了一系列强大的高级操作,让复杂的数据处理变得简洁高效。

广播(Broadcasting)是我认为NumPy最“魔幻”的特性之一。它允许NumPy在执行算术运算时,自动处理形状不同的数组。举个例子,一个形状为

(3, 4)
的二维数组与一个形状为
(4,)
的一维数组相加,NumPy会自动将一维数组“扩展”到二维数组的每一行,然后进行元素级加法。这个过程无需显式地复制数据,极大地节省了内存和计算资源。广播规则有些微妙,但核心原则是:如果两个数组的维度不同,较小的数组会被“拉伸”以匹配较大的数组;如果维度相同,但某个轴的长度不同,并且其中一个轴的长度是1,那么这个轴会被“拉伸”以匹配另一个数组的长度。理解广播,能让你写出更简洁、更“NumPyic”的代码。

聚合函数(Aggregation Functions)也是日常数据分析的利器。

arr.sum()
计算所有元素的和,
arr.mean()
计算平均值,
arr.max()
、
arr.min()
找到最大最小值,
arr.std()
计算标准差。这些函数都可以通过
axis
参数指定沿哪个轴进行操作。例如,对于一个二维数组,
matrix.sum(axis=0)
会计算每一列的和,而
matrix.sum(axis=1)
则计算每一行的和。这在统计分析中非常有用,比如计算每个特征的平均值或每个样本的总和。

线性代数操作是NumPy另一个核心优势。

np.dot(a, b)
用于计算两个数组的点积(对于二维数组就是矩阵乘法)。更专业的矩阵乘法推荐使用
@
运算符(Python 3.5+)或者
np.matmul(a, b)
,它们在处理多维数组时有更明确的语义。此外,NumPy的
linalg
模块提供了丰富的线性代数函数,如
np.linalg.inv()
计算逆矩阵,
np.linalg.det()
计算行列式,
np.linalg.eig()
计算特征值和特征向量。这些功能使得NumPy成为机器学习、物理模拟、工程计算等领域不可或缺的工具。

深入理解这些高级操作,能够让你充分发挥NumPy的潜力,解决那些用纯Python列表处理起来会非常繁琐和低效的问题。它们是NumPy之所以强大的真正原因。

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6244

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3244

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

1852

2025.10.17

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1838

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2944

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6244

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

6129

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

7714

2024.03.22

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

0

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn