Python NumPy 库详解
NumPy(Numerical Python)是一个支持大量维度数组与矩阵的高效库,此外,它也为数组提供了许多数学函数库。NumPy 在数据科学、机器学习和科学计算中广泛使用。它是 Python 中最基础的数据处理库之一,与 Pandas、Matplotlib 等其他数据分析库紧密结合。
NumPy 的核心概念
ndarray 对象
NumPy 的核心是 ndarray
(n-dimensional array),它是一个多维数组,具有相同的数据类型。创建 ndarray 最简单的方法是使用 numpy.array()
函数。例如:
import numpy as np
# 创建一维数组
array_1d = np.array([1, 2, 3, 4])
print("一维数组:", array_1d)
# 创建二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:\n", array_2d)
数组属性
ndarray 对象有几个重要的属性:
.dtype
:数组中元素的类型。.shape
:数组的维度。.ndim
:数组的维数。.size
:数组中元素的总数。
print("数组类型:", array_1d.dtype)
print("数组形状:", array_2d.shape)
print("数组维数:", array_2d.ndim)
print("数组大小:", array_2d.size)
数组索引与切片
NumPy 支持类似 Python 列表的索引方式,但能够进行多维索引和切片。例如:
# 获取单个元素
print("第一个元素:", array_1d[0])
# 切片操作
print("切片前两个元素:", array_1d[:2])
# 多维切片
print("二维数组第一个行:", array_2d[0, :])
print("二维数组第二列:", array_2d[:, 1])
数组运算
NumPy 提供了对数组进行数学运算的能力。你可以直接对数组进行算术运算,NumPy 会逐元素计算。
# 数组运算
array_a = np.array([1, 2, 3])
array_b = np.array([4, 5, 6])
# 加法
print("加法:", array_a + array_b)
# 乘法
print("乘法:", array_a * array_b)
# 逐元素平方
print("逐元素平方:", array_a ** 2)
广播机制
NumPy 的广播机制允许不同形状的数组一起进行运算。较小的数组会被自动扩展到与较大的数组相同的形状。
array_c = np.array([[1], [2], [3]])
array_d = np.array([4, 5, 6])
result = array_c + array_d
print("广播结果:\n", result)
常用函数
NumPy 提供了很多用于数组运算和处理的函数,例如 np.sum()
, np.mean()
, np.median()
, np.std()
等等。
# 计算数组的和、均值、中位数和标准差
print("数组总和:", np.sum(array_a))
print("数组均值:", np.mean(array_a))
print("数组中位数:", np.median(array_a))
print("数组标准差:", np.std(array_a))
数组操作
NumPy 还提供了多种数组操作,比如拼接(concatenate)、分割(split)、转置(transpose)等。
# 数组拼接
array_e = np.array([7, 8, 9])
concatenated_array = np.concatenate((array_a, array_e))
print("拼接后数组:", concatenated_array)
# 数组分割
split_arrays = np.split(array_2d, 2)
print("分割后的数组:", split_arrays)
# 数组转置
transposed_array = array_2d.T
print("转置后的数组:\n", transposed_array)
总结
NumPy 是进行科学计算和数据分析的重要工具,其高效的数组操作和丰富的数学函数为数据处理和分析提供了便利。通过学习和掌握 NumPy,用户可以在数据科学的道路上走得更远。希望这篇文章能帮助你更好地了解和使用 NumPy 库。