| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> numpy根据值的大小来拆分数组,并新建一个轴 -> 正文阅读 |
|
[数据结构与算法]numpy根据值的大小来拆分数组,并新建一个轴 |
在numpy中,常规的数据切片,根据轴来进行数据切分等,都很方便。但,如果要根据矩阵中的值来切分数组,并新建一个维度,这个还是有点麻烦。记录过程如下: 有这么一个数组:
我希望,根据第1列的值,增加一个轴,最终拆分成?【x<=3】【3<x<=6】【6<x】三个区间,然后再汇总这三个区间的合计值。 我先切出矩阵的第一列,其他维度不变:
做筛选索引:
三个区间,所以有三个表达式。看输出,(array([6, 7, 8]), array([0, 0, 0])),可以看到这是numpy中的整数数组索引,代表了三个坐标位置。 为什么第二个数组都是[0,0,0],因为索引矩阵只有一列,所以这个索引不重要,重要的是前面的其他维度的索引值。 下一步,就是根据这三个索引数组,构建三个新的矩阵,因为,引入了一个新的维度,所以,新的矩阵要多出一维。
对比一下两个矩阵的 shape
好了,下面有一个有意思的操作,根据其他维度的索引值,把所有数据复制到新的矩阵
因为,使用 ndarray[where_1] 直接把数据切出来,会丧失维度信息,降维成了一维数组。要保持维度结构,只好手动复制数据了。看一下结果:
果然,只复制出第一个区间的数据。同样流程,生成第二、三区间的矩阵(section_2, section_3) 剩下的就简单了。把三个矩阵,延着第 0 轴,连接起来就可以了。
看一下,因为在原来的结构上,新增一个维度,数据还是那些数据。多出的 0 是必要的,因为维度结构被保留了。可以看到,随着维度的增加,存贮空间是指数级增长的。
好,我们按新的维度,延着第 1 轴来汇总一下数据:
三行,分别是三个区间的汇总值。 这个需求,有点意思。花了一些时间。 更多的维度也是一样的,在代码上要做自适应的处理,这里演示的是单步手动执行的代码。自适应多维的矩阵的代码会更复杂一些。代码 如果有谁有其他的更好方法,请务必告知我。深表感谢。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:47:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |