当前位置:   article > 正文

【Python】NumPy库的介绍及用法

【Python】NumPy库的介绍及用法

目录

1、应用场景

2、NumPy-三方库


1、应用场景

NumPy(Numerical Python)是Python的一个开源的数值计算扩展库,主要用于对大量数据进行高效存储和计算。以下是一些NumPy在实际中的应用场景:

  1. 图像处理: 利用NumPy的多维数组,可以方便地对图像进行处理,例如图像的缩放、转换、滤波等。
  2. 机器学习: NumPy的数值计算功能非常适合用来实现各种机器学习算法。例如,在通过梯度下降法进行模型训练时,可通过NumPy进行大规模矩阵运算。
  3. 数据分析: NumPy提供了大量的数值和统计函数,可用于数据清洗和预处理。比如,你可以使用NumPy进行数据的筛选、排序、聚合等操作。
  4. 科学计算: NumPy还支持广泛的科学计算,例如线性代数运算、傅立叶变换和随机数生成等。
  5. 信号处理: 在信号处理领域,NumPy可以作为数据分析和预处理工具,处理如音频信号数据等。
  6. 在图形库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数组
  1. arr = np.array([1, 2, 3, 4, 5]) # 创建一维数组
  2. arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 创建二维数组
  • 使用shape和dtype属性查看数组的形状和数据类型
  1. print(arr.shape) # 输出:(5,)
  2. print(arr_2d.shape) # 输出:(3, 3)
  3. print(arr.dtype) # 输出:int32 或 int64
  • 使用内建函数生成特殊数组
  1. zero_arr = np.zeros((2, 2)) # 生成2x2的全0数组
  2. ones_arr = np.ones((3, 3)) # 生成3x3的全1数组
  3. eye_arr = np.eye(3) # 生成3x3的单位矩阵
  4. random_arr = np.random.random((4, 4)) # 生成4x4的随机数组
  • 按元素运算
  1. a = np.array([1, 2, 3, 4])
  2. b = np.array([1, 2, 1, 2])
  3. add = a + b # 输出: array([2, 4, 4, 6])
  4. sub = a - b # 输出: array([0, 0, 2, 2])
  5. mul = a * b # 输出: array([1, 4, 3, 8])
  6. div = a / b # 输出: array([1., 1., 3., 2.])

此外,NumPy还提供了许多其他功能,如切片,索引,广播等等。其强大的功能使得NumPy成为Python科学计算的核心库。

以下是NumPy中切片,索引,广播的示例:

  • 切片(Slicing): 类似Python中列表(list)的切片操作。
  1. arr = np.array([0, 1, 2, 3, 4, 5])
  2. print(arr[1:4]) # 输出:[1 2 3]
  3. arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  4. print(arr_2d[:2, 1:3]) # 输出:[[2 3] [5 6]]
  • 索引(Indexing): 可通过索引访问或修改数组中的元素。
  1. arr = np.array([0, 1, 2, 3, 4, 5])
  2. print(arr[2]) # 输出: 2
  3. arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  4. print(arr_2d[1, 2]) # 输出: 6

也可以通过布尔索引进行操作:

  1. arr = np.array([0, 1, 2, 3, 4, 5])
  2. print(arr > 2) # 输出:[False False False True True True]
  3. print(arr[arr > 2]) # 输出:[3 4 5]
  • 广播(Broadcasting): 广播是NumPy处理不同形状数组进行数学运算的方式。例如:
  1. arr = np.array([0, 1, 2, 3, 4, 5])
  2. print(arr[1:4]) # 输出:[1 2 3]
  3. arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  4. print(arr_2d[:2, 1:3]) # 输出:[[2 3] [5 6]]

以下是一些常用的NumPy方法:

  1. numpy.array:创建数组,例如np.array([1, 2, 3]),创建一个一维数组。
  2. numpy.arange:类似于Python的range函数,可以按一定的步长生成数值序列,例如np.arange(0, 1, 0.1)生成从0到1(不含1)步长为0.1的数列。
  3. numpy.reshape:将原数组重新塑造为指定形状的新数组。
  4. numpy.random:生成随机数,例如np.random.random((2,2)),生成一个2x2的随机数数组。
  5. numpy.dot:进行点乘运算。
  6. numpy.sum,numpy.min,numpy.max,numpy.mean:数组元素的总和,最小值,最大值,平均值计算。
  7. numpy.sort:对数组进行排序。
  8. numpy.transpose 或数组.T:数组的转置。
  9. numpy.concatenate:将两个或多个数组合并为一个新的数组。
  10. numpy.save / numpy.load:保存和加载数组数据到硬盘。

以上只是NumPy中一小部分方法,NumPy提供了数百种高效实用的数组操作和数值计算函数,具体可以参考NumPy官方文档和教程学习使用。

以下通过一些例子展示NumPy的一些常用方法:

  • 创建一个数组:
  1. import numpy as np
  2. arr = np.array([1, 2, 3, 4, 5])
  3. print(arr) # 输出:[1 2 3 4 5]
  • 使用arange生成数值序列:
  1. arr = np.arange(0, 5, 1) # 从0开始,到5结束(不含5),步长为1
  2. print(arr) # 输出:[0 1 2 3 4]
  • 使用reshape改变数组的形状:
  1. arr = np.arange(10)
  2. print(arr.reshape(2, 5)) # 输出:[[0 1 2 3 4] [5 6 7 8 9]]
  • 使用random生成随机数:
  1. arr = np.random.random((2, 2))
  2. print(arr)
  • 求和,最大值,最小值,平均值:
  1. arr = np.array([1, 2, 3, 4, 5])
  2. print(np.sum(arr)) # 输出:15
  3. print(np.min(arr)) # 输出:1
  4. print(np.max(arr)) # 输出:5
  5. print(np.mean(arr)) # 输出:3.0
  • 数组排序:
  1. arr = np.array([4, 2, 1, 5, 3])
  2. print(np.sort(arr)) # 输出:[1 2 3 4 5]
  • 数组转置:
  1. arr = np.array([[1, 2, 3], [4, 5, 6]])
  2. print(arr.T) # 输出:[[1 4] [2 5] [3 6]]
  • 合并数组:
  1. arr1 = np.array([1, 2, 3])
  2. arr2 = np.array([4, 5, 6])
  3. print(np.concatenate((arr1, arr2))) # 输出:[1 2 3 4 5 6]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/121688
推荐阅读
相关标签
  

闽ICP备14008679号