gpt4 book ai didi

arrays - 根据函数删除 Julia 矩阵的行

转载 作者:行者123 更新时间:2023-12-02 18:58:31 27 4
gpt4 key购买 nike

如果您获得了索引,则有多个问题涉及删除 Julia 矩阵中的特定行。

How to delete a row of matrix in julia

Julia: delete rows and columns from an array or matix

我需要的略有不同,因为只有当所有行的值都为零时我才想删除矩阵的一行。当您想删除给定特定条件或函数的行时,也许您可​​以概括我的问题。这里可能是对于一行,sum(row .!= 0) == 0

我找到了 I need here 的精确换位,对于列,但我无法将其调整为行。我尝试过:

a[vec(mapslices(col -> any(col .!= 0), a, dims = 1)), :]
a[:, vec(mapslices(col -> any(col .!= 0), a, dims = 2))]

均未成功。

举个例子,我想删除以下矩阵中的第三行。

1 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0

最后,如果可能的话,我更愿意创建矩阵的 View 而不是复制。这不是强制性的,但我认为我不需要副本,因此它可能会更好地运行时间:)

最佳答案

你就快到了:

julia> a = [1 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0] ;

julia> a[vec(mapslices(col -> any(col .!= 0), a, dims = 2)), :]
3×5 Array{Int64,2}:
1 0 0 0 0
0 1 0 0 0
0 0 0 1 0

如果您需要它:

julia> view(a, vec(mapslices(col -> any(col .!= 0), a, dims = 2)), :)
3×5 view(::Array{Int64,2}, [1, 2, 4], :) with eltype Int64:
1 0 0 0 0
0 1 0 0 0
0 0 0 1 0

关于arrays - 根据函数删除 Julia 矩阵的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65899976/

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