JKH*_*KHA 2 arrays performance matrix conditional-statements julia
如果给定了索引,则有多个问题涉及删除 Julia 矩阵中的特定行。
我需要的略有不同,因为我只想在所有行的值都为零时删除矩阵的一行。当您想删除给定特定条件或函数的行时,也许您可以概括我的问题。这里可能是连续的,sum(row .!= 0) == 0
我在这里找到了我需要的列的确切换位,但我无法将其调整为行。我试过:
a[vec(mapslices(col -> any(col .!= 0), a, dims = 1)), :]
a[:, vec(mapslices(col -> any(col .!= 0), a, dims = 2))]
Run Code Online (Sandbox Code Playgroud)
两者均未成功。
举个例子,我想删除以下矩阵中的第三行。
1 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
最后,如果可能的话,我更愿意创建矩阵的视图而不是复制。这不是强制性的,但我认为我不需要副本,因此它可能会更好地运行时间:)
你就快到了:
\njulia> a = [1 0 0 0 0\n 0 1 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0] ;\n\njulia> a[vec(mapslices(col -> any(col .!= 0), a, dims = 2)), :]\n3\xc3\x975 Array{Int64,2}:\n 1 0 0 0 0\n 0 1 0 0 0\n 0 0 0 1 0\n
Run Code Online (Sandbox Code Playgroud)\n如果你需要它:
\njulia> view(a, vec(mapslices(col -> any(col .!= 0), a, dims = 2)), :)\n3\xc3\x975 view(::Array{Int64,2}, [1, 2, 4], :) with eltype Int64:\n 1 0 0 0 0\n 0 1 0 0 0\n 0 0 0 1 0\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
785 次 |
最近记录: |