NumPy(Numerical Python)是 Python 中用于科学计算的基础库,它提供了高性能的多维数组对象(ndarray
)以及处理这些数组的各种工具。以下是对 NumPy 常见用法的详细讲解:
1. 安装与导入
在使用 NumPy 之前,需要先安装它。如果你使用的是 Anaconda 环境,NumPy 已经默认安装;如果是普通 Python 环境,可以使用 pip
进行安装:
pip install numpy
安装完成后,在 Python 代码中导入 NumPy:
python">import numpy as np
通常使用 np
作为 NumPy 的别名,这是一种约定俗成的做法。
2. 创建数组
从列表创建数组
可以使用 np.array()
函数将 Python 列表转换为 NumPy 数组。
python">import numpy as np# 创建一维数组
list1 = [1, 2, 3, 4, 5]
arr1 = np.array(list1)
print(arr1) # 输出: [1 2 3 4 5]# 创建二维数组
list2 = [[1, 2, 3], [4, 5, 6]]
arr2 = np.array(list2)
print(arr2)
# 输出:
# [[1 2 3]
# [4 5 6]]
使用内置函数创建数组
np.zeros()
:创建指定形状的全零数组。
python">zeros_arr = np.zeros((3, 4))
print(zeros_arr)
# 输出:
# [[0. 0. 0. 0.]
# [0. 0. 0. 0.]
# [0. 0. 0. 0.]]
np.ones()
:创建指定形状的全一数组。
python">ones_arr = np.ones((2, 3))
print(ones_arr)
# 输出:
# [[1. 1. 1.]
# [1. 1. 1.]]
np.arange()
:类似于 Python 的range()
函数,创建一个等差数列数组。
python">arange_arr = np.arange(0, 10, 2)
print(arange_arr) # 输出: [0 2 4 6 8]
np.linspace()
:创建一个在指定区间内均匀分布的数组。
python">linspace_arr = np.linspace(0, 1, 5)
print(linspace_arr) # 输出: [0. 0.25 0.5 0.75 1. ]
3. 数组的属性
shape
:返回数组的形状。
python">arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # 输出: (2, 3)
dtype
:返回数组中元素的数据类型。
python">print(arr.dtype) # 输出: int64
ndim
:返回数组的维度。
python">print(arr.ndim) # 输出: 2
4. 数组的索引和切片
一维数组
python">arr = np.arange(10)
print(arr[3]) # 输出: 3
print(arr[2:5]) # 输出: [2 3 4]
二维数组
python">arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[1, 2]) # 输出: 6
print(arr[0:2, 1:3])
# 输出:
# [[2 3]
# [5 6]]
arr[0:2, 1:3]
具体含义:
- 行切片
0:2
:- 切片操作中的第一个参数
0:2
用于指定行的选取范围。在 Python 的切片语法里,冒号:
前面的数字表示起始索引(包含该索引对应的元素),冒号后面的数字表示结束索引(不包含该索引对应的元素)。 - 所以
0:2
表示从第 0 行开始(索引从 0 开始计数),到第 2 行之前结束,即选取第 0 行和第 1 行。
- 切片操作中的第一个参数
- 列切片
1:3
:- 切片操作中的第二个参数
1:3
用于指定列的选取范围。同样根据 Python 切片语法,1:3
表示从第 1 列开始(从0开始算),到第 3 列之前结束,即选取第 1 列和第 2 列。
- 切片操作中的第二个参数
5. 数组的运算
算术运算
NumPy 数组支持基本的算术运算,这些运算会逐元素进行。
python">arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2) # 输出: [5 7 9]
print(arr1 * arr2) # 输出: [4 10 18]
矩阵运算
使用 np.dot()
函数进行矩阵乘法。
python">arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
result = np.dot(arr1, arr2)
print(result)
# 输出:
# [[19 22]
# [43 50]]
6. 数组的统计函数
np.sum()
:计算数组元素的总和。
python">arr = np.array([1, 2, 3, 4, 5])
print(np.sum(arr)) # 输出: 15
np.mean()
:计算数组元素的平均值。
python">print(np.mean(arr)) # 输出: 3.0
np.max()
和np.min()
:分别返回数组中的最大值和最小值。
python">print(np.max(arr)) # 输出: 5
print(np.min(arr)) # 输出: 1
7. 数组的形状操作
reshape()
:改变数组的形状。
python">arr = np.arange(12)
new_arr = arr.reshape(3, 4)
print(new_arr)
# 输出:
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
flatten()
和ravel()
:将多维数组转换为一维数组。
python">print(new_arr.flatten()) # 输出: [ 0 1 2 3 4 5 6 7 8 9 10 11]
以上是 NumPy 的一些常见用法,NumPy 还有很多其他强大的功能,如随机数生成、线性代数运算等,可以根据具体需求进一步学习。