问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

图解NumPy包一文就够了(2025版)

创作时间:
作者:
@小白创作中心

图解NumPy包一文就够了(2025版)

引用
1
来源
1.
https://cloud.tencent.com.cn/developer/article/2504102

NumPy是Python生态系统中数据分析、机器学习和科学计算的核心库。它提供了强大的数组操作功能,是许多主流Python库(如scikit-learn、SciPy、pandas和TensorFlow)的基础。本文将通过详细的图解和代码示例,帮助读者全面掌握NumPy的基本使用方法。

NumPy包简介

NumPy包是Python生态系统中数据分析、机器学习和科学计算的主力。它极大地简化了对向量和矩阵的操作和处理,Python的一些主要软件包依赖NumPy作为其基础设施的基本组成部分(例如scikit-learn、SciPy、pandas和TensorFlow)。

在vcsode中新建一个文件,numpy.ipynb,打开就可以交互式的运行Python了:官网好像已经更新到2.2.0版本了!

# 导入NumPy
import numpy as np
# 查看版本
np.__version__
# 1.26.4

创建数组

1. 通过传递给np.array()函数一个list对象,来创建一个数组:

# 比如这里一维的数组
data = np.array([1,2,3])
data

图示如下,有了图的加持,真的非常好理解:

2. 创建一个随机初始化数组

np.onesnp.zerosnp.random.random分别表示创建一个指定长度为n的数组:

data = np.ones(3)
data
data = np.zeros(3)
data
data = np.random.random(3)
data

图示:

3. 多维数组

二维:

data = np.array([[1,2],[3,4]])
data
# 同样的
np.ones((3,2))
np.zeros((3,2))
np.random.random((3,2))

更高维:

np.array([ [[1,2],[3,4]],
          [[5,6],[7,8]] ])
np.ones((4,3,2))
np.zeros((4,3,2))
np.random.random((4,3,2))

提取子集

使用下标和切片提取,Python的下标是从0开始的:

data = np.array([[1,2],[3,4],[5,6]])
data
data[0,1]
data[1:3]
data[1:3,]
data[0:2,0]

数组转置与reshape()

转置:行变成列,列变成行

data = np.array([[1,2],[3,4],[5,6]])
data
data.T

reshape:

data = np.array([1,2,3,4,5,6])
data
data.reshape(2,3)
data.reshape(3,2)

数组运算

1. 矩阵可以进行加减乘除等数学运算:

# 首先创建两个维度一致的矩阵:
data = np.array([1,2])
ones = np.ones(2)
# 加法
ad = data + ones
ad

2. 其他运算:

# 减法
sub = data - ones
sub
# 乘法
mul = data * data
# 除法
div = data / data
# 自动补全
pl = data * 1.6

图示:但是这里的运算好像和线性代数里面感觉有点不一样啊?

3. 自动补全:

4. 最小值/最大值/平均值等:

data = np.array([1,2,3])
data.max()
data.min()
data.sum()
data.prod()
data.std()

二维数组每一行每一列的最大、最小值:

data = np.array([[1,2],[3,4],[5,6]])
data.max(axis=0)
data.max(axis=1)

axis=0表示按列运算,axis=1表示按行运算:更多的运算见:https://jakevdp.github.io/PythonDataScienceHandbook/02.04-computation-on-arrays-aggregates.html

5. 多维数组运算

# data + ones
data = np.array([[1,2],[3,4]])
ones = np.ones((2,2))
data + ones
![](https://wy-static.wenxiaobai.com/chat-rag-image/15623406984990178415)
# data + ones_row
data = np.array([[1,2],[3,4],[5,6]])
ones_row = np.ones((1,2))
data + ones_row

6. 点积运算(dot)

这个运算看起来比较像线性代数里面的两个矩阵相乘:

data1 = np.array([1,2,3])
data2 = np.array([[1,10],[100,1000],[10000,100000]])
data1.dot(data2)

高级运算

除了向量和矩阵支持运算外,公式的使用也是NumPy成为宠儿的原因之一。例如在解决回归问题中监督式机器学习的核心公式:均方差公式

error = (1/n) * np.sum(np.square(predictions - labels))

具体计算过程如下:predictions与labels这两个参数的长度需要相同:

step1
step1
step2

step2

step3
step3

step4
step4

更多应用

1. 音频文件

一段音频可以存为一个一维数组,通过切片法可以剪辑任意一段:CD质量的音频每秒包含44,100个样本,每个样本是-65535到65536之间的整数。这意味着如果你有一个10秒的CD质量WAVE文件,你可以将它加载到长度为10 * 44,100 = 441,000的NumPy数组中

2. 图像Images

图像是像素大小(高度 x 宽度)的矩阵。如果图像是黑白的(也称为灰度),每个像素可以用一个数字表示(通常介于0(黑色)和255(白色)之间)。想要裁剪图像左上角10 x 10像素的部分吗?使用numpy

如果图像是彩色的,那么每个像素用三个数字表示——红色、绿色和蓝色各一个值。在这种情况下,我们需要一个三维(因为每个单元格只能包含一个数字)。所以一个彩色图像是由一个3维数组表示的:(高 x 宽 x 3)

使用图的形式直观展示出来是不是容易理解多了~

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号