NumPy 数组排序、过滤与随机数生成详解


在本教程中,我们将详细介绍如何使用NumPy进行数组的排序、过滤和随机数生成。这些操作是数据处理和分析中常用的基本技能。

1. 安装NumPy

如果你还没有安装NumPy,可以使用以下命令进行安装:

pip install numpy

2. NumPy数组排序

NumPy提供了多种排序方法,我们将介绍常用的numpy.sortnumpy.argsort函数。

使用numpy.sort

numpy.sort函数返回一个排序后的数组副本:

import numpy as np

# 创建一个随机数组
arr = np.random.randint(1, 100, size=10)
print("Original array:", arr)

# 使用numpy.sort排序
sorted_arr = np.sort(arr)
print("Sorted array:", sorted_arr)

使用numpy.argsort

numpy.argsort函数返回的是数组排序后的索引:

# 获取排序后的索引
sorted_indices = np.argsort(arr)
print("Sorted indices:", sorted_indices)

# 使用索引获取排序后的数组
sorted_arr_by_indices = arr[sorted_indices]
print("Sorted array by indices:", sorted_arr_by_indices)

3. NumPy数组过滤

NumPy的数组过滤功能使你能够根据条件提取数组中的元素。

使用布尔索引

布尔索引用于基于条件筛选数组:

# 创建一个随机数组
arr = np.random.randint(1, 100, size=10)
print("Original array:", arr)

# 筛选出数组中大于50的元素
filtered_arr = arr[arr > 50]
print("Filtered array (elements > 50):", filtered_arr)

使用numpy.where

numpy.where函数返回满足条件的元素的索引,可以用来提取或修改数组:

# 获取大于50的元素的索引
indices = np.where(arr > 50)
print("Indices of elements > 50:", indices)

# 使用索引提取元素
filtered_arr_by_where = arr[indices]
print("Filtered array by where (elements > 50):", filtered_arr_by_where)

4. NumPy随机数生成

NumPy的numpy.random模块提供了生成各种类型随机数的函数。

生成均匀分布的随机数

numpy.random.rand生成0到1之间的均匀分布随机数:

# 生成5个均匀分布的随机数
uniform_random_numbers = np.random.rand(5)
print("Uniform random numbers:", uniform_random_numbers)

生成标准正态分布的随机数

numpy.random.randn生成标准正态分布(均值为0,标准差为1)的随机数:

# 生成5个正态分布的随机数
normal_random_numbers = np.random.randn(5)
print("Normal random numbers:", normal_random_numbers)

生成指定范围的随机整数

numpy.random.randint生成指定范围的随机整数:

# 生成5个1到100之间的随机整数
random_integers = np.random.randint(1, 101, size=5)
print("Random integers:", random_integers)

生成服从指定分布的随机数

numpy.random.normal生成指定均值和标准差的正态分布随机数:

# 生成5个均值为10,标准差为2的正态分布随机数
mu, sigma = 10, 2
custom_normal_random_numbers = np.random.normal(mu, sigma, 5)
print("Custom normal random numbers (mu=10, sigma=2):", custom_normal_random_numbers)

综合示例

以下是一个综合示例,演示了数组排序、过滤和随机数生成的操作:

import numpy as np

# 生成一个包含10个1到100之间随机整数的数组
arr = np.random.randint(1, 101, size=10)
print("Original array:", arr)

# 排序数组
sorted_arr = np.sort(arr)
print("Sorted array:", sorted_arr)

# 获取排序后的索引
sorted_indices = np.argsort(arr)
print("Sorted indices:", sorted_indices)

# 过滤出大于50的元素
filtered_arr = arr[arr > 50]
print("Filtered array (elements > 50):", filtered_arr)

# 生成均匀分布的随机数
uniform_random_numbers = np.random.rand(5)
print("Uniform random numbers:", uniform_random_numbers)

# 生成正态分布的随机数
normal_random_numbers = np.random.randn(5)
print("Normal random numbers:", normal_random_numbers)

# 生成1到100之间的随机整数
random_integers = np.random.randint(1, 101, size=5)
print("Random integers:", random_integers)

# 生成指定均值和标准差的正态分布随机数
mu, sigma = 10, 2
custom_normal_random_numbers = np.random.normal(mu, sigma, 5)
print("Custom normal random numbers (mu=10, sigma=2):", custom_normal_random_numbers)

通过运行上述代码,你可以学习并掌握NumPy中数组排序、过滤和随机数生成的基础操作。这些操作在数据处理和分析中非常有用。


原文链接:codingdict.net