《Numpy 简易速速上手小册》第3章:Numpy 数组操作与变换(2024 最新版)

简介: 《Numpy 简易速速上手小册》第3章:Numpy 数组操作与变换(2024 最新版)

8090eecd4fe3d2bfb5bb236e9633ba2.png

3.1 数组合并和分割

3.1.1 基础知识

数据处理的过程中,经常会遇到需要合并多个数据集或将一个大数据集分割成小块的情况。Numpy 为这些任务提供了非常方便的工具。

  • 合并(Merging)np.concatenate() 是最基础的数组合并函数,它可以沿着指定的轴将多个数组连接起来。除此之外,np.vstack()np.hstack() 分别用于垂直和水平地堆叠数组。
  • 分割(Splitting):与合并相对的是分割,np.split()np.vsplit()np.hsplit() 分别用于沿指定轴分割数组。

3.1.2 完整案例:合并多个数据集

假设你正在处理一个实验的数据,实验数据被存储在几个不同的数组中,你需要将这些数组合并为一个大数组进行分析。

import numpy as np
# 三个不同的数据集
data_set_1 = np.array([1, 2, 3])
data_set_2 = np.array([4, 5, 6])
data_set_3 = np.array([7, 8, 9])
# 水平合并
merged_data_horizontal = np.concatenate([data_set_1, data_set_2, data_set_3])
print("Horizontal Merge:", merged_data_horizontal)
# 垂直合并
merged_data_vertical = np.vstack([data_set_1, data_set_2, data_set_3])
print("Vertical Merge:\n", merged_data_vertical)

在这个例子中,我们演示了如何水平和垂直地合并三个数据集。

3.1.3 拓展案例 1:分割大型数据集

现在,假设你有一个大型数据集,由于某些原因,你需要将其分割成几个小的数据块进行处理。

# 一个大型数据集
large_data_set = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
# 分割数据集
split_data = np.split(large_data_set, [3, 6])
print("Split Data:", split_data)

在这个案例中,我们将大型数据集在指定的索引处分割成了三个不同的小数组。

3.1.4 拓展案例 2:更复杂的合并场景

假设你需要处理的数据集包含多个维度,你需要在不同的轴上进行合并操作。

# 两个二维数据集
data_set_4 = np.array([[1, 2, 3], [4, 5, 6]])
data_set_5 = np.array([[7, 8, 9], [10, 11, 12]])
# 沿着第一个轴合并
merged_data_1 = np.concatenate([data_set_4, data_set_5], axis=0)
print("Merged along first axis:\n", merged_data_1)
# 沿着第二个轴合并
merged_data_2 = np.concatenate([data_set_4, data_set_5], axis=1)
print("Merged along second axis:\n", merged_data_2)

在这个例子中,我们展示了如何沿着不同的轴合并多维数据集。

通过这些案例,你可以看到 Numpy 在数组合并和分割方面的强大功能。无论是简单的数据拼接,还是复杂的多维数据处理,Numpy 都能提供灵活而高效的解决方案。掌握了这些技巧,你就能在数据分析的世界中游刃有余!


3.2 数组的重塑和转置

3.2.1 基础知识

在数据处理中,经常需要改变数组的形状或维度,这正是 Numpy 数组重塑(Reshaping)和转置(Transposing)的用武之地。

  • 重塑(Reshaping)np.reshape() 可以改变数组的形状而不改变其数据。重要的是,新形状的总元素数量需要与原始数组相同。
  • 转置(Transposing)np.transpose() 或简单的 .T 属性,可以交换数组的行和列,即沿对角线翻转数组。

这些操作使得数组能够适应各种数据操作和算法要求,增强了数据的可用性和灵活性。

3.2.2 完整案例:图像处理

假设你正在处理图像数据,这些数据存储在三维数组中。你需要调整这些数据的形状,以适应某个特定的图像处理算法的要求。

import numpy as np
# 假设我们有一个代表图像的 3x3x3 的数组
image_data = np.arange(27).reshape((3, 3, 3))
print("Original Image Data:\n", image_data)
# 重塑数组以符合算法要求
reshaped_data = image_data.reshape((9, 3))
print("Reshaped Image Data:\n", reshaped_data)
# 转置数组
transposed_data = reshaped_data.T
print("Transposed Image Data:\n", transposed_data)

在这个例子中,我们首先重塑了图像数据,然后对其进行了转置,以满足某个特定处理流程的需求。

3.2.3 拓展案例 1:时间序列数据重塑

假设你在处理一组时间序列数据,需要将这些数据重塑以便进行时间序列分析。

# 一周每天的数据,假设每天有三个数据点
time_series_data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21])
# 将数据重塑为 7x3 的数组,每行代表一天
reshaped_time_series = time_series_data.reshape((7, 3))
print("Reshaped Time Series Data:\n", reshaped_time_series)

在这个案例中,我们将一维的时间序列数据重塑成二维数组,使每行代表一天。

3.2.4 拓展案例 2:动态数组重塑

有时候,你可能不知道某个维度的确切大小,但你知道希望数组有多少行或列。在这种情况下,你可以在重塑时使用 -1 让 Numpy 自动计算这个维度的大小。

# 生成一个 4x4 的数组
data = np.arange(16).reshape((4, 4))
print("Original Data:\n", data)
# 自动计算列的数量,只指定行数为 2
auto_reshaped_data = data.reshape((2, -1))
print("Auto Reshaped Data:\n", auto_reshaped_data)

在这个例子中,我们只指定了行数为 2,而让 Numpy 自动计算列数。

通过这些案例,你可以看到 Numpy 在数组重塑和转置方面的灵活性。无论是简单的形状调整还是复杂的数据重组,Numpy 都能提供简单而有效的解决方案。掌握了这些技能,你在数据处理和分析方面的能力将更上一层楼!


3.3 数组的排序和筛选

3.3.1 基础知识

在数据分析和处理中,排序和筛选是常见的操作。Numpy 提供了多种工具来进行这些操作,让处理大型数据集变得简单高效。

  • 排序(Sorting)np.sort() 可以对数组进行排序。你还可以使用 argsort() 获取排序后的索引,这在需要按排序顺序重新排列其他相关数组时非常有用。
  • 筛选(Filtering):通过布尔索引,你可以根据特定条件筛选出数组的子集。例如,array[array > 0] 会返回所有正数元素。

3.3.2 完整案例:股市数据分析

假设你有一组股市的收盘价数据,你需要对这些数据进行排序并找出最高的几个收盘价。

import numpy as np
# 一周的股市收盘价
closing_prices = np.array([120.45, 121.30, 119.85, 122.05, 123.90])
# 对收盘价进行排序
sorted_prices = np.sort(closing_prices)
print("Sorted Closing Prices:", sorted_prices)
# 找出最高的三个收盘价
top_three = sorted_prices[-3:]
print("Top Three Closing Prices:", top_three)
# 使用 argsort 获取索引
indices = np.argsort(closing_prices)
print("Indices of Sorted Prices:", indices)

在这个案例中,我们对一周的股市收盘价进行了排序,并找出了最高的三个收盘价。

3.3.3 拓展案例 1:复杂数据筛选

假设你正在处理一个数据集,其中包含多个特征,并且你需要根据特定条件筛选数据。

# 假设每行是一个数据点,列代表不同的特征
data = np.array([[1.5, 2.3, 3.2],
                 [4.1, -1.2, 0.5],
                 [-3.2, 1.1, -2.2]])
# 筛选出所有第二个特征大于 1 的数据点
filtered_data = data[data[:, 1] > 1]
print("Filtered Data:\n", filtered_data)

在这个案例中,我们根据第二个特征的值筛选了数据。

3.3.4 拓展案例 2:多条件排序

假设你需要根据多个条件对一个数据集进行排序。

# 假设每行是一个学生的信息:年龄,成绩
students = np.array([[20, 82], [19, 91], [21, 85], [20, 75]])
# 首先根据成绩降序排序,然后根据年龄升序排序
sorted_students = students[np.lexsort((-students[:, 1], students[:, 0]))]
print("Students sorted by grade and age:\n", sorted_students)

在这个案例中,我们使用了 np.lexsort(),它允许我们根据多个键进行排序,先按成绩降序排序,然后在成绩相同的情况下按年龄升序排序。

通过这些案例,你可以看到 Numpy 如何灵活地处理数组的排序和筛选。这些操作是数据预处理和分析的重要组成部分,掌握它们将使你能够更有效地处理和解释数据。

目录
相关文章
|
5天前
|
计算机视觉 Python
PIL图像转换为Numpy数组:技术与案例详解
本文介绍了如何将PIL图像转换为Numpy数组,以便利用Numpy进行数学运算和向量化操作。首先简要介绍了PIL和Numpy的基本功能,然后详细说明了转换过程,包括导入库、打开图像文件、使用`np.array()`或`np.asarray()`函数进行转换,并通过打印数组形状验证转换结果。最后,通过裁剪、旋转和缩放等案例展示了转换后的应用,以及如何将Numpy数组转换回PIL图像。此外,还介绍了处理base64编码图像的完整流程。
18 4
|
2月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
96 10
|
2月前
|
Python
Numpy学习笔记(四):如何将数组升维、降维和去重
本文介绍了如何使用NumPy库对数组进行升维、降维和去重操作。
57 1
|
2月前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
55 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
2月前
|
Python
使用 NumPy 进行数组操作的示例
使用 NumPy 进行数组操作的示例
43 2
|
2月前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
121 4
|
2月前
|
机器学习/深度学习 并行计算 调度
CuPy:将 NumPy 数组调度到 GPU 上运行
CuPy:将 NumPy 数组调度到 GPU 上运行
125 1
|
3月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
108 0
|
4月前
|
机器学习/深度学习 数据处理 计算机视觉
NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
65 0
|
1月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
48 3

相关实验场景

更多