某些条件为真的数组行号,单位为Julia
如果我有某些条件为真的数组行号,单位为Julia,julia,Julia,如果我有 julia> a = [1 0; 2 1; 3 1; 7 0; 5 1; 4 0;] 6×2 Array{Int64,2}: 1 0 2 1 3 1 7 0 5 1 4 0 获取第二列等于1的行数的最快方法是什么?或者,当第二列为1时为真,否则为假的掩码。谢谢 我认为自然的方法是查找(a[:,2]。==1)。 虽然速度可能取决于a的大小,但也应该很快 在撰写本文时进行编辑(2021年2月,Julia 1.5.3,尽管我不知道何时发生更改),没有find
julia> a = [1 0; 2 1; 3 1; 7 0; 5 1; 4 0;]
6×2 Array{Int64,2}:
1 0
2 1
3 1
7 0
5 1
4 0
获取第二列等于1的行数的最快方法是什么?或者,当第二列为1时为真,否则为假的掩码。谢谢 我认为自然的方法是
查找(a[:,2]。==1)
。
虽然速度可能取决于a
的大小,但也应该很快
在撰写本文时进行编辑(2021年2月,Julia 1.5.3,尽管我不知道何时发生更改),没有
find
。这是有效的:findall(a[:,2]。==1)
我认为自然的方法是find(a[:,2]。==1)
。
虽然速度可能取决于a
的大小,但也应该很快
在撰写本文时进行编辑(2021年2月,Julia 1.5.3,尽管我不知道何时发生更改),没有
find
。这是有效的:findall(a[:,2]。==1)
另一种方法是使用理解,但速度较慢
julia> pos = [i for i in 1:size(a,1) if a[i,2] == 1]
3-element Array{Int64,1}:
2
3
5
另一种方法是使用理解,但速度较慢
julia> pos = [i for i in 1:size(a,1) if a[i,2] == 1]
3-element Array{Int64,1}:
2
3
5
谢谢这是什么意思。这是一个基本的比较。如果
a
是数组,a==1
将始终返回false
,因为1不是数组;但是a.==1
将返回一个与a
大小相同的数组,其中true
位于a
的位置,其中有一个1.0。这是什么意思。这是一个基本的比较。如果a
是数组,a==1
将始终返回false
,因为1不是数组;但是a.==1
将返回一个与a
大小相同的数组,其中true
位于a
的位置,其中有一个1。另外find(view(a,:,2))
工作(在我的机器上再快10倍)也find(view(a,:,2))
工作(在我的机器上再快10倍)实际上,对于小矩阵,我发现理解要快得多。但对于大型矩阵,情况并非如此。事实上,对于小型矩阵,我发现理解速度要快得多。不过,对于大型矩阵,情况并非如此。