目录
NumPy模块介绍
NumPy 是 Python 科学计算领域的重要基石,与当前 “躺吃旅行” 话题看似不相关,但在数据处理分析上意义重大。我将从它的核心功能、应用场景和优势等方面展开介绍。
NumPy(Numerical Python)是 Python 语言中用于科学计算的基础库,它提供了高性能的多维数组对象以及大量用于对数组进行操作的函数,是数据科学、机器学习、人工智能等领域不可或缺的工具。NumPy 的核心数据结构是ndarray(多维数组),这种数组允许在内存中以连续的方式存储同类型的数据,相较于 Python 原生列表,它在存储和运算效率上有着显著提升。通过 NumPy,用户可以轻松实现数组的创建、索引、切片、变形,以及各种数学运算,如矩阵乘法、统计计算、傅里叶变换等。
在实际应用中,NumPy 广泛应用于数据分析、机器学习算法的底层实现、图像和信号处理等领域。例如,在机器学习中,数据集通常会被加载并转换为 NumPy 数组进行预处理和模型训练;在图像处理中,图像数据也会被表示为多维数组,借助 NumPy 提供的函数完成图像的滤波、变换等操作。此外,NumPy 还与众多科学计算库紧密集成,如 SciPy、Pandas 等,共同构建起强大的 Python 科学计算生态,极大地提升了数据处理和分析的效率。
本期课程,我将从概念、逻辑、实操、应用4各层面阐释我对这个模块的理解,希望为喜欢Python的学习者提供一个内容详实、逻辑清晰、容易上手的课程。
3.2 NumPy 数组属性查看与趣味应用
3.2.1 课程目标
通过本课件学习,掌握查看 NumPy 数组的行数和列数、元素个数、数据类型、维数的方法,并能灵活运用这些知识处理实际问题,同时通过趣味案例加深对数组属性的理解与应用。
3.2.2 查看数组的行数和列数
在 NumPy 中,可通过shape属性查看数组的行数和列数,该属性返回一个元组,元组元素依次对应数组的各维度大小。
案例 1:查看一维数组的 “行数”
import numpy as np
arr_1d = np.array([1, 2, 3, 4, 5])
print(arr_1d.shape)
一维数组 arr_1d 的 shape 属性返回(5,),这里的 5 表示数组中元素的个数,也可理解为 “行数” ,因为一维数组只有一个维度。
案例 2:查看二维数组的行数和列数
import numpy as np
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr_2d.shape)
二维数组arr_2d的shape属性返回(3, 3),第一个 3 表示行数,第二个 3 表示列数,即该数组有 3 行 3 列。
案例 3:查看三维数组的行数、列数和深度
import numpy as np
arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr_3d.shape)
三维数组arr_3d的shape属性返回(2, 2, 2),第一个 2 表示最外层的维度大小(可理解为 “组数”),第二个 2 表示中间层的行数,第三个 2 表示内层的列数。
3.2.3 查看数组元素个数
使用size属性可获取 NumPy 数组中元素的总个数,无论数组是几维,该属性都能准确统计元素数量。
案例 1:一维数组元素个数
import numpy as np
arr_1d = np.arange(10)
print(arr_1d.size)
一维数组arr_1d由arange(10)生成,包含 0 到 9 共 10 个元素,size属性返回 10。
案例 2:二维数组元素个数
import numpy as np
arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr_2d.size)
二维数组arr_2d有 3 行 3 列,通过size属性计算可得元素个数为 9(3×3 = 9)。
案例 3:三维数组元素个数
import numpy as np
arr_3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr_3d.size)
三维数组arr_3d的shape为(2, 2, 3),其元素个数通过size属性计算为 12(2×2×3 = 12) 。
3.2.4 查看和转换数组元素的数据类型
可使用dtype属性查看数组元素的数据类型,通过astype()方法转换数据类型。
案例 1:查看数组数据类型
import numpy as np
arr_int = np.array([1, 2, 3])
arr_float = np.array([1.1, 2.2, 3.3])
print(arr_int.dtype)
print(arr_float.dtype)
arr_int的数据类型为int64,arr_float的数据类型为float64,通过dtype属性可清晰查看。
案例 2:将整数数组转换为浮点数数组
import numpy as np
arr_int = np.array([1, 2, 3])
arr_float_converted = arr_int.astype(np.float32)
print(arr_float_converted.dtype)
使用astype(np.float32)将arr_int从int64类型转换为float32类型,转换后dtype变为float32。
案例 3:将字符串数组转换为数值数组
import numpy as np
arr_str = np.array(['1', '2', '3'])
arr_int_converted = arr_str.astype(np.int32)
print(arr_int_converted.dtype)
将包含数字字符串的数组arr_str通过astype(np.int32)转换为int32类型的数值数组,前提是字符串内容可正确转换为对应数值类型。
3.2.5 查看数组维数
通过ndim属性可查看 NumPy 数组的维数,即数组拥有的轴(维度)数量。
案例 1:一维数组的维数
import numpy as np
arr_1d = np.array([1, 2, 3, 4])
print(arr_1d.ndim)
一维数组arr_1d的ndim属性返回 1,表示该数组只有一个维度。
案例 2:二维数组的维数
import numpy as np
arr_2d = np.array([[1, 2], [3, 4]])
print(arr_2d.ndim)
二维数组arr_2d的ndim属性返回 2,说明其具有行和列两个维度。
案例 3:三维数组的维数
import numpy as np
arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(arr_3d.ndim)
三维数组arr_3d的ndim属性返回 3,表明该数组拥有三个维度。
3.2.6 知识点总结与课程回顾
本次课程主要学习了 NumPy 数组的四个重要属性查看方法:
1. shape属性:用于查看数组的行数、列数等各维度大小,以元组形式返回结果。
2. size属性:可获取数组元素的总个数,不受数组维度影响。
3. dtype属性与astype()方法:dtype查看数组元素数据类型,astype()实现数据类型转换。
4. ndim属性:查看数组的维数,明确数组的维度结构。
通过多个案例和代码演示,我们掌握了这些属性的使用方法,在实际数据处理中,这些属性有助于我们快速了解数组特征,为后续数据运算和分析奠定基础。
3.2.7 趣味案例
案例 1:图像数据处理
在图像处理中,图像数据常以三维数组形式存储,如(高度, 宽度, 通道数)。通过查看数组的shape属性,可快速得知图像的尺寸和通道信息。例如,若一个图像数组img_array的shape为(400, 600, 3),则表示该图像高度为 400 像素,宽度为 600 像素,包含 RGB 三个颜色通道。
案例 2:成绩统计分析
在学生成绩统计中,二维数组可用于存储多个学生的多科成绩,如arr_scores = np.array([[85, 90, 78], [92, 88, 95]]),通过size属性可快速得知成绩数据的总个数,利用shape属性能获取学生人数和科目数量,进而进行平均分计算等统计分析。
案例 3:随机密码生成
生成包含随机字符的一维数组作为密码时,可先创建包含字符的数组,如char_array = np.array(['a', 'b', 'c', '1', '2', '3']),通过size属性获取字符种类数量,结合随机函数从数组中选取字符组成密码,利用dtype属性确保字符类型正确存储。
这份课件从多方面介绍了 NumPy 数组属性。你若觉得案例数量、讲解深度需要调整,或者还有其他意见和建议,欢迎随时交流。