numpy的用法
一、数组的创建
创建数组
转换为数组 1
2# 将 arrs 转换为 NumPy 数组。如果 arr 已经是 NumPy 数组,那么它将保持不变。如果 arr 是列表或其他可迭代对象,它将被转换为 NumPy 数组。
np.asarray(arrs)
生成从a到b指定n个数的数组 1
np.linspace(a, b, n)
创建全为1的数组 1
np.ones(shape, dtype=None, order='C')
创建指定形状的未初始化的数组,里面内容是随机的
1 | np.empty(shape, dtype=float, order='C') |
用于沿指定轴重复数组中的元素, 重复一行或者一列后,再重复下一行或列
1 | np.repeat(a, repeats, axis=None) |
用于沿指定轴堆叠数组的副本,构成一个新的数组,数组按整体重复
1 | np.tile(A, reps) |
创建随机数组
用于生成随机整数 1
np.random.randint(low, high=None, size=None, dtype=int)
用于生成服从均匀分布的随机数 1
np.random.uniform(low, high, size=None)
用于生成服从标准正态分布(均值为0,标准差为1)的随机数的函数
1
np.random.randn(d0, d1, ..., dn)
函数用于随机排列或打乱数组的元素顺序,生成一个新的随机排列的数组或列表。它通常用于数据的随机化,洗牌,或创建随机样本。
1
np.random.permutation()
生成服从0到1之间均匀分布的随机数 1
np.random.rand()
依概率选择数组
用于从给定的数组或序列中进行随机抽样的函数
1
np.random.choice(a, size=None, replace=True, p=None)
用于从指定的序列中随机抽取指定k个数量的唯一元素(不重复抽样)
1
random.sample(population, k)
二、数组的操作运算
数组计算相关
矩阵叉乘 1
np.cross(arr1, arr2)
矩阵点乘 1
np.dot(arr1, arr2)
两个形状相同的矩阵对应元素的乘法运算
1
np.multiply(arr1, arr2)
两个形状相同的矩阵对应元素的除法运算
1
np.divide(arr1, arr2)
用于计算数组中元素的平均值 1
np.mean(a, axis=None, dtype=None, out=None, keepdims=False)
用于数组中按行或者列求和 1
np.sum(arr, axis=1)
计算方差 1
np.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
计算数组中每个元素的平方 1
np.array(arr)
用于计算向量或矩阵的范数 1
np.linalg.norm(x, ord=None, axis=None, keepdims=False)
用于可逆矩阵求逆 1
np.linalg.inv()
用于计算不可求逆矩阵的伪逆矩阵 1
np.linalg.pinv()
用于计算一个数组中的元素的指数幂 1
np.power(base, exponent)
取整 1
np.abs(arr)
向下取整 1
np.floor(arr)
自身相乘的n次方 1
np.linalg.matrix_power(A, 3)
求矩阵的秩 1
rank_A = np.linalg.matrix_rank(A)
求矩阵累加
1 | np.cumsum(arr, axis=0) |
求矩阵累乘 1
np.cumprod(arr, axis=0)
数组之间的欧式距离 1
np.linalg.norm(x - y)
数组随机选择
用来从给定的数组中生成随机样本 1
np.random.choice(a, size=None, replace=True, p=None, axis=0, shuffle=True)
排序
按轴进行排序 1
x.sort(axis=-1, kind=None, order=None)
用于返回数组中元素排序后的索引的函数
1
numpy.argsort(a, axis=-1, kind='quicksort', order=None)
对数组进行随机排列 1
np.random.shuffle(arr)
用于对数组执行间接排序 1
np.lexsort(arr)
数组查找相关
用于检查给定数组中是否存在任意一个元素满足指定条件。如果数组中有任意一个元素满足条件,则返回 True,否则返回 False
1 | np.any() |
在整个数组中查找最小值的索引 1
np.argmin(a, axis=None, out=None)
用于查找数组中元素的最小值
1 | np.min(a, axis=None, keepdims=False) |
在整个数组中查找最大值的索引 1
np.argmax(a, axis=None, out=None)
在整个数组中查找最大值 1
.max()
数组中对满足条件的元素进行替换 1
2
3
4np.where(condition, x, y)
#当只有condition时返回满足条件的索引
np.where(condition)
查找数组中唯一的元素 1
np.unique()
查找数组的空元素,返回布尔值 1
np.isnan(x)
查找数组中非零元素的个数 1
np.count_nonzero(a, axis=None)
查找数组中满足条件的元素的索引 1
np.argwhere(a)
删除指定元素 1
2arr = np.delete(arr, np.where(arr == value_to_remove))
arr = np.delete(arr, index_to_remove)
两个数组内部元素比较
若第一个数组中的元素大于第二个数组中对应位置的元素结果是True
1
np.greater(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])
若第一个数组中的元素小于第二个数组中对应位置的元素结果是True
1
np.less(x1, x2)
数组维度相关操作
用于从数组x中移除所有维度为1的维度
1
np.squeeze(x)
增加一个新的维度 1
[:, np.newaxis]与[np.newaxis, :]
.flatten()用于将多维数组展平为一维数组,创建一个副本
1
np.asarray(results).flatten()
将多维数组中的所有元素按照一维的顺序排列,不是副本
1
np.ravel()
用于连接(合并)数组的函数。它可以沿指定的轴将多个数组连接在一起
1
np.concatenate((a1, a2, ...), axis=0, out=None)
用于在水平方向堆叠(水平拼接)多个数组或矩阵
1
np.hstack((array1, array2))
用于垂直堆叠数组的函数 1
np.vstack((array1, array2))
1 | np.row_stack((array1, array2)) |
用于按列将输入数组堆叠在一起 1
np.column_stack((arr1, arr2, arr3))
用于将向量按水平方向翻转 1
np.fliplr(arr)
用于沿指定的轴重复数组 1
np.tile(A, reps)
三、 数组的广播
用于创建一个与指定数组具有相同形状的新数组,并填充指定的常量值。
1
np.full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None)
用于在指定轴上重复数组中的元素 1
np.repeat(array, n, axis=0)
用于在指定轴上重复整个数组 1
np.tile(array, (m, 1))
四、数组类型数据的存储与读取
数据存储 1
2
3
4
5
6
7
8
9
10
11
12import numpy as np
# 假设 best_individual_ture_fitness_record 包含要保存的数据
best_individual_ture_fitness_record = np.array([5012.145430434681, 6218.152152733865, 3671.3336005601905, 1847.8489548514644])
# 指定保存的文件名
file_name = "best_individual_ture_fitness.txt"
# 使用 np.savetxt 将数据保存到文本文件
np.savetxt(file_name, best_individual_ture_fitness_record)
print(f"数据已保存到 {file_name}")
数据读取 1
2
3
4
5
6
7
8
9
10
11
12import numpy as np
# 指定文件名
file_name = "best_individual_ture_fitness.txt"
# 使用 np.loadtxt 读取文件中的数据
best_individual_ture_fitness_record = np.loadtxt(file_name)
# 打印读取的数组
print("读取的数组:")
print(best_individual_ture_fitness_record)
numpy类型数据转换为列表 1
2
3
4
5
6
7
8
9
10import numpy as np
# 创建一个二维NumPy数组
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 将二维数组转换为Python列表
list_2d = array_2d.tolist()
# 打印转换后的列表
print(list_2d)