删除julia数组上的空列

删除julia数组上的空列,julia,Julia,与Julia商量,我希望删除值为0的列。我有一个数组,下面有很多空列,我想删除它们 115×40 Array{Float64,2}: -0.0 -0.0 -0.0 -0.0 … -0.0 0.0 -0.0 0.0 -0.0 -0.0 -0.0 0.0 0.0 0.0 -0.0 -0.0 -0.0 -0.0 -0.0 0.0 -0.0 0.0 0.0 -0.0 -0.0 -0.0 0.0 0.0 0

与Julia商量,我希望删除值为0的列。我有一个数组,下面有很多空列,我想删除它们

115×40 Array{Float64,2}:
 -0.0  -0.0  -0.0  -0.0  …  -0.0   0.0  -0.0
  0.0  -0.0  -0.0  -0.0      0.0   0.0   0.0
 -0.0  -0.0  -0.0  -0.0     -0.0   0.0  -0.0
  0.0   0.0  -0.0  -0.0     -0.0   0.0   0.0
  0.0   0.0   0.0  -0.0     -0.0   0.0   0.0
 -0.0   1.0  -0.0   0.0  …  -0.0   0.0   0.0
 -0.0  -0.0   0.0  -0.0     -0.0   0.0   0.0
  0.0  -0.0  -0.0  -0.0      0.0   0.0   0.0
  0.0  -0.0   0.0  -0.0     -0.0   0.0   0.0
  ⋮                      ⋱
  0.0   1.0  -0.0  -0.0      0.0  -0.0  -0.0
 -0.0  -0.0   0.0  -0.0      0.0  -0.0  -0.0
  1.0   0.0  -0.0  -0.0      0.0  -0.0   0.0
 -0.0   0.0  -0.0  -0.0  …   0.0  -0.0  -0.0
  0.0   0.0  -0.0   0.0     -0.0  -0.0  -0.0
 -0.0  -0.0  -0.0   0.0     -0.0  -0.0  -0.0
  0.0  -0.0  -0.0   0.0     -0.0   0.0   0.0
 -0.0  -0.0  -0.0  -0.0     -0.0   1.0   0.0
有人知道怎么做吗


关于,

a
作为数组,然后

a[:, vec(mapslices(col -> any(col .!= 0), a, dims = 1))]
工作
mapslices
a
减少为1x40布尔矩阵,表示非零列,我们需要将其转换为
向量
进行索引,因此
vec
(或者,可以
dropdims


取决于您的应用程序,一个而不是一个副本可能就足够了。

mapslices(col->all(col.!=0),a,dims=1)返回一个完全错误的数组,这不是预期的结果。设置all(col.==0)确实会返回数组,其中null列为True。接线员是什么≉ 用过吗?使用mapsicles(col->any(col.!=0),solution_raw,dims=1)似乎可以解决这个问题。当然,我在复制时混淆了
any
all
<代码>≈是我习惯性使用的操作符形式,但结果过于谨慎:文档解释说
x≈ 默认情况下,0
相当于
x==0
。但是,如果您希望有一些小值,这些值在数学上应该是零,但在数字上不是零,那么可以将
isapprox
与非零
atol
参数一起使用。