当前位置: 首页 > news >正文

Numpy科学计算与数据分析:Numpy数组操作入门:合并、分割与重塑

Numpy数组操作实战

学习目标

通过本课程的学习,学员将掌握Numpy中数组的基本操作,包括数组的合并、分割以及重塑等技巧,能够灵活运用这些操作处理数据,为后续的科学计算和数据分析打下坚实的基础。

相关知识点

Numpy数组操作

学习内容

1 Numpy数组操作

1.1 数组的合并

在数据处理中,经常需要将多个数组合并成一个数组。Numpy提供了多种方法来实现数组的合并,其中最常用的是concatenate和stack函数。

1.1.1 使用concatenate函数合并数组

concatenate函数可以沿着指定的轴将多个数组合并。这个函数非常灵活,可以处理不同形状的数组,只要它们在合并的轴上具有相同的维度。

1.1.1.1 一维数组的合并

对于一维数组,可以直接使用concatenate函数来合并它们。下面是一个简单的例子:

import numpy as np# 创建两个一维数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])# 使用concatenate函数合并数组
result = np.concatenate((array1, array2))
print(result)

输出结果:

[1 2 3 4 5 6]
1.1.1.2 二维数组的合并

对于二维数组,可以指定合并的轴。例如,沿着行(轴0)或列(轴1)进行合并。

import numpy as np
# 创建两个二维数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])# 沿着行(轴0)合并
result_row = np.concatenate((array1, array2), axis=0)
print("沿着行合并:")
print(result_row)# 沿着列(轴1)合并
result_col = np.concatenate((array1, array2), axis=1)
print("沿着列合并:")
print(result_col)

输出结果:

沿着行合并:
[[1 2][3 4][5 6][7 8]]
沿着列合并:
[[1 2 5 6][3 4 7 8]]
1.1.2 使用stack函数合并数组

stack函数可以沿着新轴将多个数组堆叠在一起。与concatenate不同,stack要求所有输入数组具有相同的形状。

1.1.2.1 一维数组的堆叠

对于一维数组,stack函数会沿着新轴(默认为0)堆叠它们,形成一个二维数组。

import numpy as np
# 创建两个一维数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])# 使用stack函数堆叠数组
result = np.stack((array1, array2))
print(result)

输出结果:

[[1 2 3][4 5 6]]
1.1.2.2 二维数组的堆叠

对于二维数组,stack函数同样可以沿着新轴堆叠它们。

import numpy as np
# 创建两个二维数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])# 沿着新轴(默认为0)堆叠
result = np.stack((array1, array2))
print(result)

输出结果:

[[[1 2][3 4]][[5 6][7 8]]]
1.2 数组的分割

在数据处理中,有时需要将一个大的数组分割成多个小数组。Numpy提供了split、hsplit和vsplit等函数来实现数组的分割。

1.2.1 使用split函数分割数组

split函数可以沿着指定的轴将数组分割成多个子数组。可以指定分割点或分割的子数组数量。

1.2.1.1 一维数组的分割

对于一维数组,可以指定分割点来分割数组。

import numpy as np
# 创建一个一维数组
array = np.array([1, 2, 3, 4, 5, 6])# 指定分割点 索引号2,4前切
result = np.split(array, [2, 4])
print(result)
result = np.split(array, [1, 5])
print(result)

输出结果:

[array([1, 2]), array([3, 4]), array([5, 6])]
[array([1]), array([2, 3, 4, 5]), array([6])]
1.2.1.2 二维数组的分割

对于二维数组,可以指定分割点或分割的子数组数量来分割数组。

import numpy as np
# 创建一个二维数组
array = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])# 沿着行(轴0)分割,【1】代表索引号前面切
result_row = np.split(array, [1], axis=0)
print("沿着行分割:")
print(result_row)# 沿着列(轴1)分割
result_col = np.split(array, [2], axis=1)
print("沿着列分割:")
print(result_col)

输出结果:

沿着行分割:
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]
沿着列分割:
[array([[1, 2],[5, 6]]), array([[3, 4],[7, 8]])]
1.2.2 使用hsplit和vsplit函数分割数组

hsplit和vsplit函数分别用于沿水平方向和垂直方向分割数组。它们是split函数的简化版本。

1.2.2.1 使用hsplit函数分割数组

hsplit函数沿水平方向()分割数组。

import numpy as np
# 创建一个二维数组
array = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])# 沿水平方向分割,(x=2序号前竖线分割)
result = np.hsplit(array, 2)
print(result)

输出结果:

[array([[1, 2],[5, 6]]), array([[3, 4],[7, 8]])]
1.2.2.2 使用vsplit函数分割数组

vsplit函数沿垂直方向()分割数组。

import numpy as np
# 创建一个二维数组
array = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])# 沿垂直方向分割,(y=2序号前横线分割)
result = np.vsplit(array, 2)
print(result)

输出结果:

[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]
1.3 数组的重塑

在数据处理中,经常需要改变数组的形状。Numpy提供了reshape和resize等函数来实现数组的重塑。

1.3.1 使用reshape函数重塑数组

reshape函数可以改变数组的形状,但不会改变数组的内容。新的形状必须与原数组的元素数量相同。

1.3.1.1 一维数组的重塑

对于一维数组,可以使用reshape函数将其重塑为多维数组。

import numpy as np
# 创建一个一维数组
array = np.array([1, 2, 3, 4, 5, 6])# 重塑为2x3的二维数组
result = array.reshape(2, 3)
print(result)

输出结果:

[[1 2 3][4 5 6]]
1.3.1.2 二维数组的重塑

对于二维数组,可以使用reshape函数将其重塑为不同形状的数组。

import numpy as np
# 创建一个二维数组
array = np.array([[1, 2, 3], [4, 5, 6]])# 重塑为3x2的二维数组
result = array.reshape(3, 2)
print(result)

输出结果:

[[1 2][3 4][5 6]]
1.3.2 使用resize函数重塑数组

resize函数可以改变数组的形状,如果新的形状与原数组的元素数量不同,resize会重复或截断数组的内容。

1.3.2.1 一维数组的重塑

对于一维数组,可以使用resize函数将其重塑为不同形状的数组。

import numpy as np
# 创建一个一维数组
array = np.array([1, 2, 3, 4, 5, 6])# 重塑为2x3的二维数组
result = np.resize(array, (2, 3))
print(result)

输出结果:

[[1 2 3][4 5 6]]
http://www.lryc.cn/news/612749.html

相关文章:

  • 水库大坝安全监测系统主要概述
  • Python 数据类型及数据类型转换
  • Python Socket 脚本深度解析与开发指南
  • 目标检测数据集 - 自动驾驶场景道路异常检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • Jenkins全链路教程——Jenkins用户权限矩阵配置
  • 东莞立晟精密硅胶科技有限公司将携重磅产品亮相 AUTO TECH China 2025 广州国际汽车技术展
  • oracle 11G安装大概率遇到问题
  • 计算机网络:固定网络位长度子网划分flsm和可变长子网掩码划分vlsm的区别
  • QT项目 -仿QQ音乐的音乐播放器(第五节)
  • 全局异常处理器
  • [特殊字符] 未来图钉式 AI 时代的智能生态布局:副脑矩阵与人机共振的系统构想
  • Linux->信号
  • 如何在 VS Code 中进行 `cherry-pick`
  • 计算机毕业设计java疫情防控形势下的高校食堂订餐管理系统 高校食堂订餐管理系统在疫情防控背景下的设计与实现 疫情防控期间高校食堂线上订餐管理平台
  • 【已解决】-bash: mvn: command not found
  • 2025数字马力一面面经(社)
  • [优选算法专题一双指针——两数之和](双指针和哈希表)
  • git branch -a无法查看最新的分支
  • 垃圾桶满溢识别准确率↑32%:陌讯多模态融合算法实战解析
  • 计算机基础·linux系统
  • 一篇文章入门TCP与UDP(保姆级别)
  • Android Auto开发指南
  • KUKA库卡焊接机器人氩气节气设备
  • shell脚本while只循环一次,后续循环失效
  • Android 之 Kotlin 扩展库KTX
  • Linux SSH 日志分析详解:从原理到实战
  • 基于人眼视觉特性的相关图像增强基础知识介绍
  • k8s中pod如何调度?
  • Python day37
  • 【AI】——SpringAI通过Ollama本地部署的Deepseek模型实现一个对话机器人(二)