julia - CartesianIndex 操作
问题描述
我想知道如何使用 CartesianIndex。例如我有数组
julia> A = rand(1:5, 10, 2)
10×2 Array{Int64,2}:
2 5
1 1
4 5
4 1
2 1
4 1
2 4
1 5
2 5
4 4
我想保存所有与数字 1 接近(成对)的数字。我可以使用c=findall(x->x==1, A)
,但我将有一个“1”的卡顿索引。它有一个函数x=getindex.(c, [1 2])
可以创建一个我可以更改的数组,但我不知道如何将它转换回 CartesianIndex。我认为这一定是一个更好的方法来做到这一点。
解决方案
A[view(A.==1,:,[2,1])]
这实际上返回“与数字 1 成对的所有数字”。
返回数字的顺序是柱状的。如果要按行返回:
A'[view(A.==1,:,[2,1])']
例子:
julia> A = rand(1:5, 10, 2)
10×2 Array{Int64,2}:
1 4
3 3
1 3
3 3
5 1
1 5
2 1
3 3
1 3
2 3
julia> A'[view(A.==1,:,[2,1])']
6-element Array{Int64,1}:
4
3
5
5
2
3
如果您想要完整的行而不是使用filter!
:
julia> filter!((x)->(1 in x), collect(eachrow(A)))
6-element Array{SubArray{Int64,1,Array{Int64,2},Tuple{Int64,Base.Slice{Base.OneTo{Int64}}},true},1}:
[1, 4]
[1, 3]
[5, 1]
[1, 5]
[2, 1]
[1, 3]
推荐阅读
- flutter - 使用 in_app_purchases 官方库在 Flutter 中使用促销代码在订阅中实现应用内促销
- css - Gulp SCSS 颜色变量到 css
- cordova - Cordova 应用程序无法打开 azure 媒体播放器视频
- angular - 如何在 Angular 中正确链接依赖的异步管道
- swift - Xcode 11.3.1 与 Firebase
- vb.net - 字符串未被识别为有效的日期时间:MyBase.Text = " / / "
- python - 集成两个函数的乘积
- javascript - 定期刷新的Vue屏幕,安全完成
- javascript - 从字符串中提取分隔的数字组
- python - 由于缺少 dateutil 模块,crontab 未执行 python 文件