在数据科学的领域中,数据预处理和清洗占据了相当大的一部分工作量,这些工作往往既繁琐又耗时。因此,Python中的NumPy和Pandas模块在这些过程中显得尤为重要,它们根据不同的使用场景和需求条件被广泛使用。
NumPy(NP)是NumericalPython的缩写,它主要用于执行数学运算。虽然可以使用普通的数学运算,但在NumPy中进行操作的速度更快,时间复杂度更低,这正是处理海量数据时追求的目标。
在开始使用NumPy之前,需要先导入这个库。以下代码展示了如何导入NumPy模块,并使用别名'np'来简化代码。
import numpy as np
NumPy的核心是'ndarray',即n维数组。它类似于列表数据类型,但存在一些差异。
创建NumPy数组时,如果数组中包含不同数据类型的元素,NumPy会进行类型提升,将所有元素转换为相同的数据类型。
x = np.array([1, 2, 3, 4, 5])
打印变量'x'时,它看起来像一个列表,但如果打印'x'的详细信息,会发现它是一个一维数组,数据类型为'int64'。
NumPy数组具有shape、type()和dtype等属性,分别表示数组的维度、类型和数据类型。
x.shape # 输出: (5,)
x.type() # 输出: <class 'numpy.ndarray'>
x.dtype # 输出: int64
NumPy提供了多种数据类型,可以通过图像清晰地了解它们之间的差异。
已经了解了一维数组,现在让看看二维数组。通过列表的列表概念,可以创建二维数组。
Y = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
打印变量'Y'的详细信息,会发现它是一个二维数组,维度为(4,3)。
NumPy在分配数据类型时会自动进行类型提升,以避免在数值计算中丢失精度。
z = np.array([1, 2.5, 3])
在这个例子中,尽管数组'z'中大部分元素是'int64'类型,但由于存在'float64'类型的元素,NumPy将整个数组提升为'float64'类型。
也可以根据需要自定义数组的数据类型。
X = np.array([1, 2.5, 3], dtype='int64')
在这个例子中,尽管输入元素包含'int64'和'float64'类型,但由于明确指定了数据类型为'int64',因此所有元素都被转换为'int64'类型。
使用NumPy模块,可以创建多种特殊类型的数组。
这些函数可以根据需要生成特定形状的数组。
要生成随机数组,首先需要导入Python的random模块,然后使用random模块的函数来生成所需顺序的数组。
import random
random_array = np.array([random.randint(0, 100) for _ in range(10)])