NumPy是Python中用于科学计算的基础库,提供了大量的数组操作函数。以下是一些NumPy中的常用操作:

基本操作

数组创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import numpy as np

# 从列表或元组创建数组
arr = np.array([1, 2, 3, 4])
print(arr)

# 创建全零数组,可以指定数组的形状和数据类型。
zeros_arr = np.zeros((2, 3))
print(zeros_arr)

# 创建全一数组,可以指定数组的形状和数据类型。
ones_arr = np.ones((2, 3), dtype=int)
print(ones_arr)

# 创建未初始化数组,返回的数组元素是未初始化的,其值可能是随机的。
empty_arr = np.empty((2, 2))
print(empty_arr)

# 创建填充数组,可以指定数组的形状、数据类型和填充值。
full_arr = np.full((2, 2), 7)
print(full_arr)

# 创建等差数组,类似于Python的range()函数。
arange_arr = np.arange(0, 10, 2)
print(arange_arr)

# 创建等间隔数组,可以指定起始值、终止值和元素个数。
linspace_arr = np.linspace(0, 1, 5)
print(linspace_arr)

# 创建对数间隔数组,生成在对数刻度上均匀分布的数值。
logspace_arr = np.logspace(0, 2, 3, base=10)
print(logspace_arr)

数组属性

1
2
3
4
5
6
7
8
9
10
11
12
# 形状:使用.shape属性,返回数组的形状,即各维度的大小。
print(arr.shape)

# 维度:使用.ndim属性,返回数组的维度个数。
print(arr.ndim)

# 数据类型:使用.dtype属性,返回数组元素的数据类型。
print(arr.dtype)

# 数组大小:使用.size属性,返回数组元素的总个数。
print(arr.size)

数组操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 数组变形:使用.reshape()方法,可以改变数组的形状而不改变其数据。
reshaped_arr = arr.reshape((2, 2))
print(reshaped_arr)

# 数组转置:使用.T属性或.transpose()方法,可以交换数组的轴。
transposed_arr = reshaped_arr.T
print(transposed_arr)

# 数组扁平化:使用.flatten()方法或.ravel()方法,将多维数组转换为一维数组。
flattened_arr = reshaped_arr.flatten()
print(flattened_arr)

# 数组扩展维度:使用np.expand_dims()函数或.reshape()方法,可以增加数组的维度。
expanded_arr = np.expand_dims(arr, axis=0)
print(expanded_arr)

# 数组缩减维度:使用np.squeeze()函数,可以去除数组中的单维度条目。
squeezed_arr = np.squeeze(expanded_arr)
print(squeezed_arr)

# 数组拼接:使用np.concatenate()、np.stack()、np.vstack()、np.hstack()等函数,可以沿指定轴拼接数组。
concat_arr = np.concatenate((arr, np.array([5, 6, 7, 8])))
print(concat_arr)

# 数组分割:使用np.split()、np.hsplit()、np.vsplit()等函数,可以将数组分割成多个子数组。
split_arrs = np.split(arr, [2, 4])
print(split_arrs)

# 数组索引和切片:可以使用整数索引、切片索引和布尔索引来访问数组的元素。

数组计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 数组元素级运算:NumPy支持数组与数组、数组与标量之间的加、减、乘、除等运算。
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
sum_arr = arr1 + arr2
print(sum_arr)

# 数组点积:使用np.dot()函数,可以计算两个数组的点积。
dot_product = np.dot(arr1, arr2)
print(dot_product)

# 数组广播:NumPy支持广播机制,允许不同形状的数组进行运算。

# 数学函数:NumPy提供了大量的数学函数,如平方根(np.sqrt())、平方(np.square())、绝对值(np.absolute())、指数函数(np.exp())、对数函数(np.log()、np.log10()、np.log2())等。
sqrt_arr = np.sqrt(arr1)
print(sqrt_arr)

# 三角函数:NumPy提供了正弦(np.sin())、余弦(np.cos())、正切(np.tan())等三角函数。
sin_arr = np.sin(arr1)
print(sin_arr)

统计分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 求和:使用np.sum()函数,可以计算数组元素的总和。
sum_value = np.sum(arr)
print(sum_value)

# 平均值:使用np.mean()函数,可以计算数组元素的平均值。
mean_value = np.mean(arr)
print(mean_value)

# 中位数:使用np.median()函数,可以计算数组元素的中位数。
median_value = np.median(arr)
print(median_value)

# 标准差:使用np.std()函数,可以计算数组元素的标准差。
std_value = np.std(arr)
print(std_value)

# 方差:使用np.var()函数,可以计算数组元素的方差。
var_value = np.var(arr)
print(var_value)

# 最大值和最小值:使用np.max()和np.min()函数,可以分别计算数组元素的最大值和最小值。
max_value, min_value = np.max(arr), np.min(arr)
print(max_value, min_value)

# 百分位数和分位数:使用np.percentile()和np.quantile()函数,可以计算数组的百分位数和分位数。

矩阵操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 矩阵乘法:使用np.matmul()函数或@运算符,可以计算两个矩阵的乘积。
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
mat_product = np.matmul(mat1, mat2)
print(mat_product)
# 或者使用 @ 运算符
mat_product_at = mat1 @ mat2
print(mat_product_at)

# 矩阵求逆:使用np.linalg.inv()函数,可以计算方阵的逆矩阵。
inv_mat = np.linalg.inv(mat1)
print(inv_mat)

# 矩阵行列式:使用np.linalg.det()函数,可以计算方阵的行列式。
det_value = np.linalg.det(mat1)
print(det_value)

# 矩阵特征值和特征向量:使用np.linalg.eig()函数,可以计算方阵的特征值和特征向量。
eig_values, eig_vectors = np.linalg.eig(mat1)
print(eig_values)
print(eig_vectors)

# 矩阵的SVD分解:使用np.linalg.svd()函数,可以对矩阵进行奇异值分解。

其他操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 唯一值:使用np.unique()函数,可以找到数组中的唯一值。
unique_values = np.unique(arr)
print(unique_values)

# 集合操作:NumPy提供了np.intersect1d()、np.union1d()、np.setdiff1d()、np.setxor1d()等函数,可以进行一维数组的集合操作。

# 条件索引:使用np.where()函数,可以根据条件选择数组中的元素。
condition = arr > 2
filtered_arr = arr[condition]
print(filtered_arr)

# 排序:使用np.sort()函数或数组的.sort()方法,可以对数组进行排序。
sorted_arr = np.sort(arr)
print(sorted_arr)

# 复制:使用np.copy()函数或数组的.copy()方法,可以复制数组。
copied_arr = np.copy(arr)
print(copied_arr)