首页 > 数据库 > 数据库开发技术 > Numpy算法实现常用的20个操作
在解决复杂算法问题时,Numpy 提供了丰富的高级操作来简化计算和数据处理。

本文介绍20个Numpy在算法设计和实现经常用到的操作。
import numpy as np
# 创建一个全零数组
zeros_array = np.zeros((3, 3))
print(zeros_array) # 输出:[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
# 创建一个全一数组
ones_array = np.ones((2, 2))
print(ones_array) # 输出:[[1. 1.] [1. 1.]]
# 创建一个单位矩阵
identity_array = np.eye(2)
print(identity_array) # 输出:[[1. 0.] [0. 1.]]
# 创建一个随机数组
np.random.seed(0)
random_array = np.random.rand(2, 2)
print(random_array) # 输出: [[0.5488135 0.71518937],[0.60276338 0.54488318]]
# 创建一个数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 访问单个元素
element = arr[1, 2]
print(element) # 输出:6
# 访问子数组
sub_array = arr[0:2, 1:3]
print(sub_array) # 输出:[[2] [5]]
# 改变数组形状
arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape(3, 2)
print(reshaped_arr)
# 输出:[[1, 2], [3, 4], [5, 6]]
# 水平拼接
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
concatenated_arr = np.hstack((arr1, arr2))
print(concatenated_arr) # 输出:[1, 2, 3, 4, 5, 6]
# 垂直拼接
concatenated_arr = np.vstack((arr1, arr2))
print(concatenated_arr)
# 输出:[[1, 2, 3], [4, 5, 6]]
# 水平分割
arr = np.array([1, 2, 3, 4, 5, 6])
split_arr = np.hsplit(arr, 2)
print(split_arr) # 输出:[array([1, 2, 3]), array([4, 5, 6])]
# 垂直分割
split_arr = np.vsplit(arr, 2)
print(split_arr)
# 输出:[array([1, 2]), array([3, 4]), array([5, 6])]
# 创建一个数组
arr = np.array([1, 2, 3])
# 深拷贝
deep_copy_arr = arr.copy()
print(deep_copy_arr) # 输出:[1, 2, 3]
# 创建一个数组
arr = np.array([1, 2, 3, 4, 5, 6])
# 获取切片
sliced_arr = arr[1:4]
print(sliced_arr) # 输出:[2, 3, 4]
# 最小值
min_value = arr.min()
print(min_value) # 输出:1
# 最大值
max_value = arr.max()
print(max_value) # 输出:6
# 总和
sum_value = arr.sum()
print(sum_value) # 输出:21
# 平均值
mean_value = arr.mean()
print(mean_value) # 输出:3.5
# 通过条件创建布尔索引
bool_index = arr > 3
print(bool_index) # 输出:[False, False, False, True, True, True]
# 使用布尔索引获取元素
selected_elements = arr[bool_index]
print(selected_elements) # 输出:[4, 5, 6]
# 对数组进行排序
sorted_arr = np.sort(arr)
print(sorted_arr) # 输出:[1, 2, 3, 4, 5, 6]
# 获取数组的逆序
reversed_arr = np.flip(arr)
print(reversed_arr) # 输出:[6, 5, 4, 3, 2, 1]
# 获取数组中的唯一值
unique_values = np.unique(arr)
print(unique_values) # 输出:[1, 2, 3, 4, 5, 6]
# 计算每个元素的出现次数
counts = np.bincount(arr)
print(counts) # 输出:[1, 1, 1, 1, 1, 1]
# 创建一个数组
arr = np.array([1, 2, 3])
# 使用广播机制进行运算
broadcasted_arr = arr * 2
print(broadcasted_arr) # 输出:[2, 4, 6]
# 水平合并
merged_arr = np.concatenate((arr1, arr2), axis=0)
print(merged_arr) # 输出:[1, 2, 3, 4, 5, 6]
# 垂直合并
merged_arr = np.concatenate((arr1, arr2), axis=1)
print(merged_arr)
# 输出:[[1, 4], [2, 5], [3, 6]]
# 在指定位置插入元素
inserted_arr = np.insert(arr, 1, 99)
print(inserted_arr) # 输出:[1, 99, 2, 3]
# 删除指定位置的元素
deleted_arr = np.delete(arr, 1)
print(deleted_arr) # 输出:[1, 3]
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 对数组进行转置
transposed_arr = arr.T
print(transposed_arr)
# 输出:[[1, 4], [2, 5], [3, 6]]
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 展平数组
flattened_arr = arr.flatten()
print(flattened_arr) # 输出:[1, 2, 3, 4, 5, 6]
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 按列拆分数组
split_by_column_arr = np.hsplit(arr, 2)
print(split_by_column_arr) # 输出:[array([1, 4]), array([2, 5]), array([3, 6])]
# 创建多个数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])
# 合并多维数组
merged_multi_arr = np.array([arr1, arr2, arr3])
print(merged_multi_arr)
# 输出:[[1, 2, 3], [4,5,6],[7, 8, 9]
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
probabilities = np.array([0.1, 0.2, 0.3, 0.2, 0.2])#抽取概率
random_element = np.random.choice(arr, p=probabilities)
print("按照概率分布随机抽取的元素:", random_element)#随机抽取,每次结果不一样
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
probabilities = np.array([0.1, 0.2, 0.3, 0.2, 0.2])#抽取概率
n = 3
random_elements = np.random.choice(arr, size=n, p=probabilities)
print("按照概率分布随机抽取的n个元素:", random_elements)#随机抽取,每次结果不一样
大家熟悉本文给出的这些操作,就可以灵活运用numpy来进行各类复杂的运算。
原文作者:Python学习杂记;如有侵权,请联系管理员删除。