目录
1、应用场景
NumPy(Numerical Python)是Python的一个开源的数值计算扩展库,主要用于对大量数据进行高效存储和计算。以下是一些NumPy在实际中的应用场景:
- 图像处理: 利用NumPy的多维数组,可以方便地对图像进行处理,例如图像的缩放、转换、滤波等。
- 机器学习: NumPy的数值计算功能非常适合用来实现各种机器学习算法。例如,在通过梯度下降法进行模型训练时,可通过NumPy进行大规模矩阵运算。
- 数据分析: NumPy提供了大量的数值和统计函数,可用于数据清洗和预处理。比如,你可以使用NumPy进行数据的筛选、排序、聚合等操作。
- 科学计算: NumPy还支持广泛的科学计算,例如线性代数运算、傅立叶变换和随机数生成等。
- 信号处理: 在信号处理领域,NumPy可以作为数据分析和预处理工具,处理如音频信号数据等。
- 在图形库Matplotlib中也会使用到NumPy,包括生成与处理大量数值型数据。
总的来说,只要涉及到大量数据的数值计算和处理,很可能都会需要用到NumPy。
2、NumPy-三方库
NumPy并不是Python的标准库。但它是一个第三方库,是Python进行科学计算的基础包,也是许多Python数据处理和机器学习库的依赖库。
Python的标准库是随着Python安装包直接提供的库,如math(数学函数库),datetime(日期时间库),os(操作系统功能库)等。
NumPy则需要用户在安装Python后另行安装。常见的安装方法是使用pip(Python的包管理工具)进行安装,如在命令行中输入命令“pip install numpy”。
尽管NumPy不是Python的标准库,但它由于其在数值计算等方面的强大功能,以及被众多其他第三方库所依赖,已经成为Python数据科学领域的事实标准库之一。
以下是一些基本的NumPy使用方法:
- 引入NumPy库,通常我们将其命名为np。
import numpy as np
- 创建NumPy数组
arr = np.array([1, 2, 3, 4, 5]) # 创建一维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 创建二维数组
- 使用shape和dtype属性查看数组的形状和数据类型
print(arr.shape) # 输出:(5,)
print(arr_2d.shape) # 输出:(3, 3)
print(arr.dtype) # 输出:int32 或 int64
- 使用内建函数生成特殊数组
zero_arr = np.zeros((2, 2)) # 生成2x2的全0数组
ones_arr = np.ones((3, 3)) # 生成3x3的全1数组
eye_arr = np.eye(3) # 生成3x3的单位矩阵
random_arr = np.random.random((4, 4)) # 生成4x4的随机数组
- 按元素运算
a = np.array([1, 2, 3, 4])
b = np.array([1, 2, 1, 2])
add = a + b # 输出: array([2, 4, 4, 6])
sub = a - b # 输出: array([0, 0, 2, 2])
mul = a * b # 输出: array([1, 4, 3, 8])
div = a / b # 输出: array([1., 1., 3., 2.])
此外,NumPy还提供了许多其他功能,如切片,索引,广播等等。其强大的功能使得NumPy成为Python科学计算的核心库。
以下是NumPy中切片,索引,广播的示例:
- 切片(Slicing): 类似Python中列表(list)的切片操作。
arr = np.array([0, 1, 2, 3, 4, 5])
print(arr[1:4]) # 输出:[1 2 3]
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr_2d[:2, 1:3]) # 输出:[[2 3] [5 6]]
- 索引(Indexing): 可通过索引访问或修改数组中的元素。
arr = np.array([0, 1, 2, 3, 4, 5])
print(arr[2]) # 输出: 2
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr_2d[1, 2]) # 输出: 6
也可以通过布尔索引进行操作:
arr = np.array([0, 1, 2, 3, 4, 5])
print(arr > 2) # 输出:[False False False True True True]
print(arr[arr > 2]) # 输出:[3 4 5]
- 广播(Broadcasting): 广播是NumPy处理不同形状数组进行数学运算的方式。例如:
arr = np.array([0, 1, 2, 3, 4, 5])
print(arr[1:4]) # 输出:[1 2 3]
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr_2d[:2, 1:3]) # 输出:[[2 3] [5 6]]
以下是一些常用的NumPy方法:
- numpy.array:创建数组,例如np.array([1, 2, 3]),创建一个一维数组。
- numpy.arange:类似于Python的range函数,可以按一定的步长生成数值序列,例如np.arange(0, 1, 0.1)生成从0到1(不含1)步长为0.1的数列。
- numpy.reshape:将原数组重新塑造为指定形状的新数组。
- numpy.random:生成随机数,例如np.random.random((2,2)),生成一个2x2的随机数数组。
- numpy.dot:进行点乘运算。
- numpy.sum,numpy.min,numpy.max,numpy.mean:数组元素的总和,最小值,最大值,平均值计算。
- numpy.sort:对数组进行排序。
- numpy.transpose 或数组.T:数组的转置。
- numpy.concatenate:将两个或多个数组合并为一个新的数组。
- numpy.save / numpy.load:保存和加载数组数据到硬盘。
以上只是NumPy中一小部分方法,NumPy提供了数百种高效实用的数组操作和数值计算函数,具体可以参考NumPy官方文档和教程学习使用。
以下通过一些例子展示NumPy的一些常用方法:
- 创建一个数组:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr) # 输出:[1 2 3 4 5]
- 使用arange生成数值序列:
arr = np.arange(0, 5, 1) # 从0开始,到5结束(不含5),步长为1
print(arr) # 输出:[0 1 2 3 4]
- 使用reshape改变数组的形状:
arr = np.arange(10)
print(arr.reshape(2, 5)) # 输出:[[0 1 2 3 4] [5 6 7 8 9]]
- 使用random生成随机数:
arr = np.random.random((2, 2))
print(arr)
- 求和,最大值,最小值,平均值:
arr = np.array([1, 2, 3, 4, 5])
print(np.sum(arr)) # 输出:15
print(np.min(arr)) # 输出:1
print(np.max(arr)) # 输出:5
print(np.mean(arr)) # 输出:3.0
- 数组排序:
arr = np.array([4, 2, 1, 5, 3])
print(np.sort(arr)) # 输出:[1 2 3 4 5]
- 数组转置:
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T) # 输出:[[1 4] [2 5] [3 6]]
- 合并数组:
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(np.concatenate((arr1, arr2))) # 输出:[1 2 3 4 5 6]