matrix - 如何在 Julia 中将矩阵中的偶数放在单独的向量中?
问题描述
我正在解决 Julia 中的一些矩阵问题,我需要将可以从矩阵中除以 2(或任何其他数字)的数字放在单独的向量中。一般来说,当我需要从矩阵中分离出可以被 2 或 3 或 4 等除的数字时,我无法正确索引它们。基本上,我需要 Julia 等效于 Matlab 命令:
vector=matrix(rem(matrix,2)==0)
.
我尝试了下面提到的一些事情:
vector=matrix[matrix.%2==0];
vector=(matrix.%2==0);
我希望输出是可以除以某个数字的数字向量,但在第一种情况下我会得到错误,而在第二种情况下我只会得到“真”或“假”。
这是我的第一篇文章,如果我犯了任何错误或违反任何规则,请见谅。提前致谢!
解决方案
首先,欢迎来到stackoverflow!
获得你想要的东西的一种方法,你几乎是对的,如下:
julia> M = rand(1:10, 3,3)
3×3 Array{Int64,2}:
3 10 7
6 7 8
2 10 6
julia> v = M[M .% 2 .== 0]
6-element Array{Int64,1}:
6
2
10
10
8
6
.==
请注意按元素应用相等比较的额外点。
更快的版本是使用findall
:
julia> M[findall(x->x%2==0, M)]
6-element Array{Int64,1}:
6
2
10
10
8
6
这里,x->x%2==0
是一个代表查找标准的匿名函数。在特殊情况下x%2==0
,这可以简单地替换为iseven
:
julia> M[findall(iseven, M)]
6-element Array{Int64,1}:
6
2
10
10
8
6
您还可以利用数组理解来获得您想要的东西,这应该会更快:
julia> [x for x in M if iseven(x)]
6-element Array{Int64,1}:
6
2
10
10
8
6
最后,也许最典型的选择是使用filter
:
julia> filter(iseven, M)
6-element Array{Int64,1}:
6
2
10
10
8
6
推荐阅读
- c# - C#试图加快数据库查询
- docker - juypterlab 的 Docker 容器
- naudio - NAudio - 通过应用程序检测音频
- hyperledger-fabric - 检测到循环 ACL 规则,规则条件正在调用相同的规则
- django - 为什么 Django 提出 ValueError?
- python - 使用 django-jsonschema-form 或 django-schemulator 将 jsonschema 渲染为表单
- firebase - 写入数据库的Firebase云函数多次写入并且永不返回
- ios - UICollectionView 在分页期间不更新单元格
- html - 如何在Angular的单个服务文件中传递来自不同方法的值?
- ios - iOS - 无法添加 URLRequest 的 http 标头