一、NumPy介绍
在Python中,NumPy是一个开源的数值计算扩展库,用于高效地处理大型多维数组和矩阵,同时提供了大量的数学函数库进行这些数组的操作。
NumPy库在科学计算,数据分析,机器学习中有广泛应用。
二、安装NumPy
1 pip install numpy
2.1安装完NumPy后,你需要在Python脚本中导入它才能使用:
三、Numpy数组基础
创建数组: Numpy允许使用array
函数从列表创建数组
数组的属性:数组有多个属性,如shape
(形状)、size
(大小)和dtype
(数据类型)
索引与切片:可以通过索引访问数组中的元素,或使用切片来访问子数组。
3.2数组操作
数组的形状改变:使用reshape
方法可以改变数组的形状,而不改变其数据
堆叠:stack
函数可以沿着新的轴加入一系列的数组。
1 堆叠(Stacking)在数据科学和机器学习领域,尤其是在处理多维数组或张量时,通常指的是将多个数组或矩阵沿着某个新的轴组合成一个更大的数组或张量的过程。这个过程类似于将书籍或纸张堆叠在一起,但在这里我们是在数学或编程的上下文中操作数组或矩阵。 2 3 在NumPy库中,堆叠可以通过多种函数实现,具体取决于你想要如何组合这些数组: 4 5 np.stack():允许指定沿着哪个轴进行堆叠。如果没有指定轴(axis),它默认会在最前面增加一个新的轴。这个函数非常灵活,因为它允许我们控制堆叠的方向 6 7 np.vstack():用于垂直堆叠(按行堆叠)数组。它要求输入的数组必须具有相同的列数,但行数可以不同。堆叠后的数组将具有所有输入数组的行数之和作为行数,列数与输入数组的列数相同 8 9 np.dstack():用于沿着深度轴堆叠数组,通常用于堆叠图像的不同颜色通道(例如,RGB图像的红色、绿色和蓝色通道)。它要求输入的数组必须具有相同的尺寸,除了堆叠的轴之外。 10 11 np.concatenate():虽然这不是一个专门用于堆叠的函数,但它可以用来沿着指定的现有轴连接相同形状的数组或数组序列。与np.stack()不同,np.concatenate()不会增加新的轴,而是沿着一个已存在的轴进行连接。
分割:split
函数可以将一个数组分割成多个子数组。
1 import numpy as np 2 3 d = np.array([1, 2, 3, 4, 5, 6]) 4 e, f = np.split(d, [3]) 5 print(e) # [1 2 3] 6 print(f) # [4 5 6] 7 8 9 np.split(d, [3]) 调用了np.split()函数,尝试将数组d在索引3处分割成两个子数组。由于np.split()的第二个参数是一个列表(或单个整数,但在这里被当作列表处理),其中包含了分割点的索引,因此它会在索引3之前停止分割第一个子数组,并将从索引3开始(包括索引3)的所有元素分配给第二个子数组
数组的广播:广播是Numpy中的一个强大特性,它允许不同形状的数组进行数学运算。
1 import numpy as np 2 3 g = np.array([1, 2, 3]) 4 h = 2 5 print(g * h) 6 7 创建了一个NumPy数组g,它包含三个整数元素:1, 2, 和 3。这个数组是一维的,意味着它只有一个轴,并且这个轴上有三个元素 8 9 g是一个NumPy数组,而h是一个标量 10 g * h会被解释为将h的值(即2)与g中的每个元素相乘。因此,1 * 2 = 2,2 * 2 = 4,3 * 2 = 6,最终得到一个新的NumPy数组[2, 4, 6],这个数组随后被打印出来
四、数学运算
基本数学函数: Numpy提供了许多数学函数,如加法、减法、乘法和除法
线性代数运算: Numpy支持多种线性代数运算,如矩阵乘法和求解线性方程组。
1 import numpy as np 2 3 b = np.array([[1, 2], [3, 4]]) 4 c = np.array([[5, 6], [7, 8]]) 5 print(np.dot(b, c)) # 矩阵乘法 6 7 np.dot函数用于执行两个数组的点积(dot product)。当两个数组都是二维数组时,它执行的是矩阵乘法。矩阵乘法的基本规则是,第一个矩阵的列数必须等于第二个矩阵的行数。 8 9 矩阵乘法的具体计算方式是,第一个矩阵的每一行与第二个矩阵的每一列对应元素相乘后求和,得到的结果作为结果矩阵的相应元素。 10 11 对于b和c的乘法,我们可以这样计算: 12 b = [[1, 2], 13 [3, 4]] 14 15 c = [[5, 6], 16 [7, 8]] 17 18 结果矩阵的第一行第一列元素 = 1*5 + 2*7 = 5 + 14 = 19 19 结果矩阵的第一行第二列元素 = 1*6 + 2*8 = 6 + 16 = 22 20 结果矩阵的第二行第一列元素 = 3*5 + 4*7 = 15 + 28 = 43 21 结果矩阵的第二行第二列元素 = 3*6 + 4*8 = 18 + 32 = 50 22 23 所以,np.dot(b, c) = [[19, 22], 24 [43, 50]]
统计方法: Numpy提供了一系列统计方法,用于计算平均值、中位数、标准差等。
五、高级特性
掩码数组:掩码数组是Numpy中的一种特殊数组,它可以让你隐藏或“掩码”数组中的某些数据。
六、实例:使用Numpy解决问题
- 实际案例:假设我们是数据分析师,需要分析一组股票价格的数据,找出价格最高的股票和计算所有股票价格的平均值。
- 1.数据准备: 首先,我们创建一个包含股票价格的Numpy数组。
1 import numpy as np 2 stock_prices = np.array([120.5, 90.3, 45.8, 150.1, 180.4])
2.分析:找出价格最高的股票:
1 max_price = np.max(stock_prices) 2 max_index = np.argmax(stock_prices) 3 print(f"最高股票价格为:{max_price}, 位于索引:{max_index}")
3.计算所有股票价格的平均值:
1 average_price = np.mean(stock_prices) 2 print(f"股票价格的平均值为:{average_price}")
标签:NumPy,矩阵,堆叠,数组,np,Numpy From: https://www.cnblogs.com/liuliu1/p/18367567