admin管理员组

文章数量:1446759

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

学习python,必须对其数据结构了如指掌以达到随意提取所需的数据,numpy包是python中一个比较重要的模块,前面在生信菜鸟团有一篇笔记,今天再来学习一下,写一个2025版,同时看看包有没有啥更新的吧~

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

关于python学习的环境搭建,推荐:vscode + jupter + 服务器,可以随便搜一个教程安装一下~这里不再描述。

本学习帖子介绍一些使用 NumPy 的主要方法,以及在将它们用于机器学习模型之前,它如何表示不同类型的数据 (表、图像、文本等)。

ref:/

numpy包简介

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

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

代码语言:javascript代码运行次数:0运行复制
# 导入莫夸
import numpy as np

# 查看版本
np.__version__
# 1.26.4

创建数组

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

代码语言:javascript代码运行次数:0运行复制
# 比如这里一维的数组
data = np.array([1,2,3])
data

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

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

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

代码语言:javascript代码运行次数:0运行复制
data = np.ones(3)
data

data = np.zeros(3)
data

data = np.random.random(3)
data

图示:

3.多维数组

二维:

代码语言:javascript代码运行次数:0运行复制
data = np.array([[1,2],[3,4]])
data

# 同样的
np.ones((3,2))
np.zeros((3,2))
np.random.random((3,2))

更高维:

代码语言:javascript代码运行次数:0运行复制
np.array([ [[1,2],[3,4]],
          [[5,6],[7,8]] ])
代码语言:javascript代码运行次数:0运行复制
np.ones((4,3,2))
np.zeros((4,3,2))
np.random.random((4,3,2))

提取子集

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

代码语言:javascript代码运行次数: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()

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

代码语言:javascript代码运行次数:0运行复制
data = np.array([[1,2],[3,4],[5,6]])
data
data.T

reshape:

代码语言:javascript代码运行次数:0运行复制
data = np.array([1,2,3,4,5,6])
data
data.reshape(2,3)
data.reshape(3,2)

数组运算

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

代码语言:javascript代码运行次数:0运行复制
# 首先创建两个维度一致的矩阵:
data = np.array([1,2])
ones = np.ones(2)
# 加法
ad = data + ones
ad

2.其他运算:

代码语言:javascript代码运行次数:0运行复制
# 减法
sub = data - ones
sub
# 乘法
mul = data * data
# 除法
div = data / data
# 自动补全
pl = data * 1.6

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

3.自动补全:

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

代码语言:javascript代码运行次数:0运行复制
data = np.array([1,2,3])
data.max()
data.min()
data.sum()
data.prod()
data.std()

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

代码语言:javascript代码运行次数:0运行复制
data = np.array([[1,2],[3,4],[5,6]])
data.max(axis=0)
data.max(axis=1)

axis=0表示按列运算,axis=1表示按行运算:

更多的运算见:.04-computation-on-arrays-aggregates.html

5.多维数组运算

代码语言:javascript代码运行次数:0运行复制
# data + ones
data = np.array([[1,2],[3,4]])
ones = np.ones((2,2))
data + ones
代码语言:javascript代码运行次数:0运行复制
# data + ones_row
data = np.array([[1,2],[3,4],[5,6]])
ones_row = np.ones((1,2))
data + ones_row

6.点积运算(dot)

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

代码语言:javascript代码运行次数:0运行复制
data1 = np.array([1,2,3])
data2 = np.array([[1,10],[100,1000],[10000,100000]])
data1.dot(data2)

高级运算

除了向量和矩阵支持运算外,公式的使用也是 NumPy 成为宠儿的原因之一。

例如在解决回归问题中监督式机器学习的核心公式:均方差公式

代码语言:javascript代码运行次数:0运行复制
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)

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-11,如有侵权请联系 cloudcommunity@tencent 删除机器学习numpydata数组音频

本文标签: 图解NumPy包一文就够了(2025版)