gpt4 book ai didi

matrix - 如何将矩阵中的偶数放入 Julia 中的单独向量中?

转载 作者:行者123 更新时间:2023-12-02 09:18:05 26 4
gpt4 key购买 nike

我正在 Julia 中解决一些矩阵问题,我需要将矩阵中可除以 2(或任何其他数字)的数字放入单独的向量中。一般来说,当我需要从可以除以 2 或 3 或 4...等的矩阵中分离数字时,我无法正确索引它们。基本上,我需要 Julia 等效的 Matlab 命令:

vector=matrix(rem(matrix,2)==0)

.

我尝试了下面提到的一些事情:

vector=matrix[matrix.%2==0];

vector=(matrix.%2==0);

我希望输出是可以除以特定数字的数字向量,但在第一种情况下我会得到错误,而在第二种情况下我只得到“true”或“false”。

这是我的第一篇文章,如果我犯了任何错误或违反任何规则,我深表歉意。提前致谢!

最佳答案

首先,欢迎来到 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

您还可以使用array-comprehensions也能得到你想要的东西,这应该更快:

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

关于matrix - 如何将矩阵中的偶数放入 Julia 中的单独向量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58581120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com