Python NumPy 拆分数组

news2024/11/28 19:05:00

前言

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 拆分数组。

1、使用array_split()拆分NumPy数组

拆分是联接的反向操作。

联接将多个数组合并为一个,拆分将一个数组拆分为多个。

我们使用array_split()拆分数组,将要拆分的数组和拆分次数传递给它。

例如:

将数组分为3部分:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr)

上面代码运行结果如下:

[array([1, 2]), array([3, 4]), array([5, 6])]

注意:返回值是一个包含三个数组的数组。

如果数组中的元素少于要求的数量,它将从末尾进行相应调整。

例如:

将数组分成4个部分:

import numpy as np

arr = np.array([1, 2, 7, 13, 8, 3, 13, 4, 5, 6])

newarr = np.array_split(arr, 4)

print(newarr)

上面代码运行结果如下:

[array([1, 2, 7]), array([13,  8,  3]), array([13,  4]), array([5, 6])]

注意:我们还有可用的方法split(),但是当元素较少用于拆分的源数组中时,它不会调整元素,如上面的示例,array_split()正常工作,但split()会失败。

2、拆分成数组

array_split()方法的返回值是一个包含每个拆分的数组。

如果你把一个数组分成3个数组,可以像任何数组元素一样从结果中访问它们:

例如:

访问拆分的数组:

import numpy as np

arr = np.array([1, 22, 3, 21, 5, 6])

newarr = np.array_split(arr, 3)

print(newarr[0])
print(newarr[1])
print(newarr[2])

上面代码运行结果如下:

[ 1 22]
[ 3 21]
[5 6]

3、拆分二维数组

拆分二维数组时,请使用相同的语法。

使用array_split()方法,传入要拆分的数组和要拆分的次数。

例如:

将二维数组拆分为三个二维数组。

import numpy as np

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])

newarr = np.array_split(arr, 3)

print(newarr)

上面代码运行结果如下:

[array([[1, 2],
       [3, 4]]), array([[5, 6],
       [7, 8]]), array([[ 9, 10],
       [11, 12]])]

上面的示例返回三个2-D数组。

让我们看另一个示例,这次2-D数组中的每个元素都包含3个元素。

例如:

将二维数组拆分为三个二维数组。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3)

print(newarr)

上面代码运行结果如下:

[array([[1, 2, 3],
       [4, 5, 6]]), array([[ 7,  8,  9],
       [10, 11, 12]]), array([[13, 14, 15],
       [16, 17, 18]])]

上面的示例返回三个2-D数组。

此外,您可以指定要进行拆分的轴。

下面的示例还返回三个2-D数组,但它们沿行(axis=1)分开。

例如:

沿行将2-D数组拆分为三个2-D数组。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.array_split(arr, 3, axis=1)

print(newarr)

上面代码运行结果如下:

[array([[ 1],
       [ 4],
       [ 7],
       [10],
       [13],
       [16]]), array([[ 2],
       [ 5],
       [ 8],
       [11],
       [14],
       [17]]), array([[ 3],
       [ 6],
       [ 9],
       [12],
       [15],
       [18]])]

Process finished with exit code 0

另一种解决方案是使用与hstack()相反的hsplit()

例如:

使用hsplit()方法将二维数组沿行拆分为三个二维数组。

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

newarr = np.hsplit(arr, 3)

print(newarr)

上面代码运行结果如下:

[array([[ 1],
       [ 4],
       [ 7],
       [10],
       [13],
       [16]]), array([[ 2],
       [ 5],
       [ 8],
       [11],
       [14],
       [17]]), array([[ 3],
       [ 6],
       [ 9],
       [12],
       [15],
       [18]])]

Process finished with exit code 0

注意:vstack()dstack()类似的替代版本可以作为vsplit()dsplit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/166419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2-求和(蓝桥杯)

问题描述给定 nn 个整数 a_1, a_2, , a_na1,a2,⋅⋅⋅,an ,求它们两两相乘再相加的和,即:Sa_{1} \cdot a_{2}a_{1} \cdot a_{3}\cdotsa_{1} \cdot a_{n}a_{2} \cdot a_{3}\cdotsa_{n-2} \cdot a_{n-1}a_{n-2} \cdot a_{n}a_{n-1} \cdot a_…

2022考研人年度总结,描摹23实习备战进行时

今年,是硝烟弥漫的一年在各个科目上努力也常常焦虑不断怀疑是否真的可以在考研的道路上每一件努力的小事看起来无所谓但却十分有必要2022考研热词是“努力” “披星戴月”“痛苦”你的每一个清晨与深夜都刻满了泪水与汗水春天你最爱期待夏天,夏天你说秋天…

JAVA开发运维(CI/CD)

CI :持续性集成CD:持续性部署SIT:系统集成测试UAT:用户验收测试研发流程的变化,因为用户永远一开始不知道自己想要什么样的东西,导致了软件无法从一而终的进行设计,用户需要能立刻运行的软件和功能。&#…

再学C语言36:指针和数组

指针提供了一种用来使用地址的符号方法,可以很有效地处理数组 数组标记实际上是一种变相使用指针的形式 数组名同时也是该数组首元素的地址,如果arr是一个数组,则: arr &arr[0]; 在C中,对一个指针加1的结果是…

【ROS】使用pluginlib自定义costmap地图层

文章目录 文章目录 前言 一、重写地图层 1.包含头文件 2.onInitialize() 3.updateBounds() 4.updateCosts() 二、向ROS注册 1.插件描述文件 2.向ROS注册插件 3.在costmap配置文件中使用 总结 前言 pluginlib是一个 C 库,用于从 ROS 包中加载和卸载插件。插件是从…

SpringBoot实战(十一)集成RebbitMQ

目录1.工作原理图1.1 配置阶段1.2 生产者1.3 消费者2.Maven依赖3.常用交换机类型3.1 direct 直连交换机3.2 fanout 广播交换机3.3 topic 主题交换机4.Direct 直连交换机4.1 yml配置4.2 配置类4.3 消息推送类4.4 消息监听类4.5 测试5.Fanout 广播交换机5.1 配置类5.2 消息推送类…

javascript画全年日历

前些日子闲聊群里有人提了用js画全年日历的需求,趁闲暇时间画了个小demo,下面还是先上效果图吧。 高亮显示的是今天的日期和标记要高亮显示的日期,也添加了点击事件的钩子,自己可以实现钩子函数,从而操作点击的日期值。…

综述 | 深度强化学习在自动驾驶中的应用

本文是2020年的综述论文《Deep Reinforcement Learning for Autonomous Driving: A Survey》的部分内容节选。翻译稿全文共2万6千字,本文略掉了第3、4节强化学习理论的介绍及扩展部分。摘要随着深度表征学习(deep representation learning)的发展,强化学…

【8】SCI易中期刊推荐——图像处理领域(中科院4区)

🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…

windows下Docker部署Flask的教程

Docker默认安装路径是在C盘,Windows中修改Docker**默认安装****路径方法: 1.先创建 D:\Program Files\Docker 目录 2.运行命令,创建链接 mklink /J "C:\Program Files\Docker" "D:\codeSoftware\Docker"3.点击exe安装…

logstash 向多目标输出多份日志输出syslog

logstash默认情况下是内置了输入syslog日志的,但是不支持输出syslog,需要输出syslog的情况下,就需要手动安装logstash-output-syslog插件。安装方法如下:下载logstash-output-syslog插件,https://rubygems.org/downloa…

SpringBoot 注册自己的Servlet(三种方式)

SpringBoot 注册自己的Servlet(三种方式) 目录SpringBoot 注册自己的Servlet(三种方式)方法1:使用servlet3.0规范提供的注解方式注册Servlet1,声明servlet及映射2,加上ServletComponentScan 才会扫描加了这个注解运行结…

LeetCode 62. 不同路径

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 62. 不同路径,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 62. …

蚂蚁智能内容合规产品,提供一站式营销合规管控解决方案

随着互联网服务的不断深化,产品营销的形式从传统文本、长图文,增加到短视频、直播等新媒介形态,展现形式愈加丰富的同时,也为营销宣传内容合规审核带来了诸多难题。如何解决与日俱增的审核量与合规审核人员有限之间的矛盾&#xf…

旧手机闲置?教你用Termux搭建个移动服务器

目录 前言 准备工作 实践 安装Termux: 运行Termux: 环境配置: 效果展示 写在最后 前言 最近偶然看到网上有人用KSWEB搭建本地服务器,于是突发奇想也想在手机中搭建一个node环境试试,趁着周末有空,…

Vue3商店后台管理系统设计文稿篇(五)

记录使用vscode构建Vue3商店后台管理系统,这是第五篇,主要记录Vue3项目路由知识 文章目录一、Vue3路由二、安装Element Plus三、NPM设置淘宝镜像四、Yarn 设置淘宝镜像正文内容: 一、Vue3路由 路由用于设定访问路径, 将路径和组件映射起来&…

【vue系列-06】vue的组件化编程

深入理解vue的组件一,vue组件1,什么是vue组件2,单文件组件和非单文件组件3,非单组件的基本使用4,vue组件命名规范4.1,一个单词组成4.2,多个单词组成5,组件与组件间的嵌套6&#xff0…

Tomcat结构体系

总体结构Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。从上图可以看出 Tomcat 的心脏就是…

opencv的mat openvino的tensor libtorch的tensor

opencv的mat 对于矩阵数据,在opencv里面是通过使用mat这个数据结构来实现的,我觉得这个数据结构本身设计是用来做图片的存储,所以很多的教程都是关于三维矩阵的(其中一个维度是channel),关于三维矩阵的定义…

通讯录小练习:柔性数组和文件操作实现

目录 一.程序功能 二.定义关键类型的头文件与枚举的应用 三.封装柔性数组的增容函数与缩容函数 四.添加联系人功能模块 五 .联系人信息打印模块 六. 查找指定联系人的模块 七.删除指定联系人模块 八.修改指定联系人信息模块 九.排序模块 九.文件操作模块 十.通讯录初…