Julia: Array元素过滤、元素替代、元素删除等酸爽操作
一、过滤:一个约束条件(略复杂的情况)
找出data中,满足第三列的元素在vet中的元素。
julia>data =[1 2 3; 4 5 6 ;7 8 9 ;10 11 12];julia>vet =[6 ,9];julia>condition =map(x->in(x,vet),data[:,3]);julia>data[condition,:]
2×3 Array{Int64,2}:4 5 67 8 9
还有其它方法么?
二、过滤:两个约束条件的情况
第一列中值为4,第二列中值>=5的
julia>data[(data[:,2].>=5 & data[:,1].==4),:]
1×3 Array{Int64,2}:4 5 6```几种error的情况:```
julia> data[(data[:,2].>=5 & data[:,1]==4),:] # error! =>.julia> data[data[:,2].>=5 & data[:,1].==4,:] # error!=>(),用括号理好&的优先次序julia> data[(data[:,2].>=5 && data[:,1]==4),:] # error! =>&&
三、元素替代
1、把data中的元素为2的,全部改为0
julia> data =[1,2,3,4,5,2,3,1]
8-element Array{Int64,1}:12345231julia> data[data.==2] .=0
2-element view(::Array{Int64,1}, [2, 6]) with eltype Int64:00julia> data
8-element Array{Int64,1}:10345031
2、如果要把以下data中“”,用0代替,有什么操作方式?
julia> data
9×12 Array{Any,2}:8 "" "" "" "" "" "" "" "" "" "" """" "" 3 6 "" "" "" "" "" "" "" """" 7 "" "" 9 "" 2 "" "" "" "" """" 5 "" "" "" 7 "" "" "" "" "" """" "" "" "" 4 5 7 "" "" "" "" """" "" "" 1 "" "" "" 3 "" "" "" """" "" 1 "" "" "" "" 6 8 "" "" """" "" 8 5 "" "" "" 1 "" "" "" """" 9 "" "" "" "" 4 "" "" "" "" ""
只需要:
julia> data[data .== ""] .= 0 # 其中两个点,均不能少!
julia> data
9×12 Array{Any,2}:8 0 0 0 0 0 0 0 0 0 0 00 0 3 6 0 0 0 0 0 0 0 00 7 0 0 9 0 2 0 0 0 0 00 5 0 0 0 7 0 0 0 0 0 00 0 0 0 4 5 7 0 0 0 0 00 0 0 1 0 0 0 3 0 0 0 00 0 1 0 0 0 0 6 8 0 0 00 0 8 5 0 0 0 1 0 0 0 00 9 0 0 0 0 4 0 0 0 0 0
猜一猜如果:
julia> data[data .= ""] .= 0 # bug
四、把Array 拆分成几个小Array
方法一: map
julia> data
9×9 Array{Any,2}:8 0 0 0 0 0 0 0 00 0 3 6 0 0 0 0 00 7 0 0 9 0 2 0 00 5 0 0 0 7 0 0 00 0 0 0 4 5 7 0 00 0 0 1 0 0 0 3 00 0 1 0 0 0 0 6 80 0 8 5 0 0 0 1 00 9 0 0 0 0 4 0 0
尝试一:失败
A =map((p,q)->data[1:3,p:q], 1:3:7, 3:3:9) #
3-element Array{Array{Any,2},1}:[8 0 0; 0 0 3; 0 7 0][0 0 0; 6 0 0; 0 9 0][0 0 0; 0 0 0; 2 0 0]julia> A[1]
3×3 Array{Any,2}:8 0 00 0 30 7 0
julia> A[2]
3×3 Array{Any,2}:0 0 06 0 00 9 0julia> A[3]
3×3 Array{Any,2}:0 0 00 0 02 0 0
有没有办法,一口气拆成N个 3x3的矩阵?
为什么才3个元素? 因为是一一对应的关系,[1,4,7]<=>[1,4,7],不是循还。
尝试2:失败
julia> A =map((p,q)->data[p:p+2,q:q+2], [1,4,7],[1,4,7])
3-element Array{Array{Any,2},1}:[8 0 0; 0 0 3; 0 7 0][0 0 7; 0 4 5; 1 0 0][0 6 8; 0 1 0; 4 0 0]julia> A[1]
3×3 Array{Any,2}:8 0 00 0 30 7 0尝试3: 成功!双重map + flattenjulia> t =map(p->map(q->data[p:p+2,q:q+2],[1,4,7]),[1,4,7])
3-element Array{Array{Array{Any,2},1},1}:[[8 0 0; 0 0 3; 0 7 0], [0 0 0; 6 0 0; 0 9 0], [0 0 0; 0 0 0; 2 0 0]][[0 5 0; 0 0 0; 0 0 0], [0 0 7; 0 4 5; 1 0 0], [0 0 0; 7 0 0; 0 3 0]][[0 0 1; 0 0 8; 0 9 0], [0 0 0; 5 0 0; 0 0 0], [0 6 8; 0 1 0; 4 0 0]]julia> collect(Iterators.flatten(t))
9-element Array{Array{Any,2},1}:[8 0 0; 0 0 3; 0 7 0][0 0 0; 6 0 0; 0 9 0][0 0 0; 0 0 0; 2 0 0][0 5 0; 0 0 0; 0 0 0][0 0 7; 0 4 5; 1 0 0][0 0 0; 7 0 0; 0 3 0][0 0 1; 0 0 8; 0 9 0][0 0 0; 5 0 0; 0 0 0][0 6 8; 0 1 0; 4 0 0]尝试4:成功!大杀器,把repeat也搬出来
julia>using DelimitedFiles;
julia> map((i,j)->data[i:i+2,j:j+2],repeat([1,4,7],inner=3),repeat([1,4,7],outer=3))
9-element Array{Array{Any,2},1}:[8 0 0; 0 0 3; 0 7 0][0 0 0; 6 0 0; 0 9 0][0 0 0; 0 0 0; 2 0 0][0 5 0; 0 0 0; 0 0 0][0 0 7; 0 4 5; 1 0 0][0 0 0; 7 0 0; 0 3 0][0 0 1; 0 0 8; 0 9 0][0 0 0; 5 0 0; 0 0 0][0 6 8; 0 1 0; 4 0 0]
2、列表推导式
简单,快捷。
尝试5: 成功!
julia> B=[data[p:p+2,q:q+2] for p in [1,4,7] for q in [1,4,7]]
9-element Array{Array{Any,2},1}:[8 0 0; 0 0 3; 0 7 0][0 0 0; 6 0 0; 0 9 0][0 0 0; 0 0 0; 2 0 0][0 5 0; 0 0 0; 0 0 0][0 0 7; 0 4 5; 1 0 0][0 0 0; 7 0 0; 0 3 0][0 0 1; 0 0 8; 0 9 0][0 0 0; 5 0 0; 0 0 0][0 6 8; 0 1 0; 4 0 0]
五、Array中元素的删除
1、filter!
把b中的为3的元素删除
julia> b =[1,2,3,4,5,6]
6-element Array{Int64,1}:123456julia> filter!(x->x!=3,b)
5-element Array{Int64,1}:12456
2、deleteat!
也可以,大家可以试一下。删除特定位置的元素
julia> deleteat!([6, 5, 4, 3, 2, 1], 1:2:5)
3-element Array{Int64,1}:531
Julia: Array元素过滤、元素替代、元素删除等酸爽操作相关推荐
- 过滤选择器——子元素过滤选择器
在页面开发过程中,常常遇到突出指定某行的需求.虽然使用基本过滤选择器:eq(index)可以实现单个表格的显示,但不能满足大量数据和多个表格的选择需求.为了实现这样的功能,jQuery中可以通过子元素 ...
- jquery子元素过滤选择器
jquery子元素过滤选择器 子元素过滤选择器需要我们时刻理元素的父元素和子元素,只要这样我们才能运用的得心应手. 1.:nth-child选择器 匹配每一个父元素下面的的第index个子元素或者奇偶 ...
- 2015-07-22 JQuery 第二课(JQ元素获取,添加,删除,判断,遍历,取值,样式设置,改变对象,切换)...
1.获取元素: 1).size(): 获取元素的个数. $("img").size():获取有多少个img. 2).eq():获取元素. $("img[title]&qu ...
- php去除数组中的第一个元素,php如何删除数组的第一个元素和最后一个元素
对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. ( ...
- php删除数组中的空元素_PHP | 从数组中删除所有出现的元素
php删除数组中的空元素 Given an array and we have to remove all occurrences of an element from it. 给定一个数组,我们必须 ...
- python删除最后一个元素_Numpy-从一维数组中删除最后一个元素的最佳方法?
NumPy数组的大小是固定的,因此不能就地移除元素.例如,使用del不起作用:>>> import numpy as np >>> arr = np.arange( ...
- html添加删除元素属性,jQuery学习笔记——.attr()和.removeAttr()方法操作元素属性
今天主要和大家一起分享一下如何使用jQuery的jQuery就可以让我们轻松的读取,添加,更改或删除一个(或多个)元素中的任何属性,在jQuery中我们可以使用下面的方法来实现:.attr():jQu ...
- 6.:first-child子元素过滤选择器
通过上面章节的学习,我们知道使用:first过滤选择器可以获取指定父元素中的首个子元素,但该选择器返回的只有一个元素,并不是一个集合,而使用:first-child子元素过滤选择器则可以获取每个父元素 ...
- 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...
- jQuery元素过滤
索引过滤 索引选择器是jQuery过滤选择器的一部分.与此同时,也存在功能相似的索引相关的方法,包括eq().first().last() eq() eq()方法匹配元素的集合为指定的索引的哪一个元素 ...
最新文章
- python列表用法详解(查找、添加、删除、修改、复制、循环遍历、列表嵌套)
- 农发行:BI数据平台建设
- html hover 效果,CSS八种让人眼前一亮的HOVER效果的示例代码
- 无线路由器天线上绑几个电池,真的会增强发射信号吗?
- 转载(Asp.net Core 中试使用ZKWeb.System.Drawing)
- 时差怎么理解_懂的人自然懂,不懂的人再多解释也有时差,故事只能说给懂的人听...
- Outlook邮箱不简单带你重新认识它
- numpy 矩阵对角线_python – 使用numpy将矩阵更高的对角线清零
- Word打开文件错误提示用文本恢复转换器打开文件
- 推荐一个美中不失优雅的博客网主页(素材参考---麋鹿鲁哟)
- 第四集:让声音变得更有磁性 —— 共鸣训练(汇播课程演说笔记)
- [转]一些漢字、字體/字型、内碼、輸入法資料的整理
- 图的两种遍历:深度优先遍历+广度优先遍历
- 毕业生签三方?报到证?档案户口?
- 2GB显存畅玩 DeepFaceLab更新至2019.12.29
- h0131. 钞票 (15 分)
- autojs入门视频教程,Auto.js Pro安卓全分辨率免ROOT引流脚本开发零基础到进阶教程,飞云脚本学院2019年全力打造高清品质,不容错过的年度大作
- STM32F0系列芯片SPI发送一字节数据却输出16个CLK时钟的解决办法
- 谜语,睇你识几多个?
- 【Selenium Grid 分布式测试】Selenium Grid-简介
热门文章
- 在ArcGIS Desktop中选择地物要素的方法(二)
- JavaScript 函数看代码写结果
- form表单提交的时候,传过去的值是键值对的形式
- linux驱动之设备号与创建设备节点
- poj1062 昂贵的聘礼
- LBP及纹理表达 转自http://blog.sina.com.cn/s/blog_ba9d7d9901018k4v.html
- Response.Write() Alert后页面布局改变
- codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
- 数据库优化之MySQL
- 3D重建模的初步了解