ITPub博客

首页 > 数据库 > 数据库开发技术 > Numpy算法实现常用的20个操作

Numpy算法实现常用的20个操作

原创 数据库开发技术 作者:derekwh 时间:2024-06-27 14:56:05 0 删除 编辑

在解决复杂算法问题时,Numpy 提供了丰富的高级操作来简化计算和数据处理。

本文介绍20个Numpy在算法设计和实现经常用到的操作。

  1. 数组创建
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]]
  1. 数组索引
# 创建一个数组
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]]
  1. 数组形状操作
# 改变数组形状
arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped_arr = arr.reshape(3, 2)
print(reshaped_arr)
# 输出:[[1, 2], [3, 4], [5, 6]]
  1. 数组拼接
# 水平拼接
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]]
  1. 数组分割
# 水平分割
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])]
  1. 数组复制
# 创建一个数组
arr = np.array([1, 2, 3])

# 深拷贝
deep_copy_arr = arr.copy()
print(deep_copy_arr)  # 输出:[1, 2, 3]
  1. 数组切片
# 创建一个数组
arr = np.array([1, 2, 3, 4, 5, 6])

# 获取切片
sliced_arr = arr[1:4]
print(sliced_arr)  # 输出:[2, 3, 4]
  1. 数组元素统计
# 最小值
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
  1. 布尔索引
# 通过条件创建布尔索引
bool_index = arr > 3
print(bool_index)  # 输出:[False, False, False, True, True, True]

# 使用布尔索引获取元素
selected_elements = arr[bool_index]
print(selected_elements)  # 输出:[4, 5, 6]
  1. 排序和逆序
# 对数组进行排序
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]
  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]
  1. 广播机制
# 创建一个数组
arr = np.array([1, 2, 3])

# 使用广播机制进行运算
broadcasted_arr = arr * 2
print(broadcasted_arr)  # 输出:[2, 4, 6]
  1. 数组合并
# 水平合并
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]]
  1. 数组插入和删除
# 在指定位置插入元素
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]
  1. 数组转置
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 对数组进行转置
transposed_arr = arr.T
print(transposed_arr)
# 输出:[[1, 4], [2, 5], [3, 6]]
  1. 数组展平
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 展平数组
flattened_arr = arr.flatten()
print(flattened_arr)  # 输出:[1, 2, 3, 4, 5, 6]
  1. 数组拆分
# 创建一个二维数组
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])]
  1. 数组合并多维
# 创建多个数组
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]
  1. 数组中按照概率分布随机抽取一个元素
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)#随机抽取,每次结果不一样
  1. 从一维数组中按照概率分布随机抽取n个元素:
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学习杂记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
央企算法工程师,微信公众号: python数智工坊

注册时间:2021-03-14

  • 博文量
    305
  • 访问量
    162349