Arrays 当数组中没有任何内容时,如何从数组eltype中删除任何内容?
例如,如果函数(例如Arrays 当数组中没有任何内容时,如何从数组eltype中删除任何内容?,arrays,type-conversion,julia,Arrays,Type Conversion,Julia,例如,如果函数(例如indexin)的输出具有向量{Union{Nothing,Int64}类型, 但是预先知道只输出值(无无)。 并且该输出应馈送至另一个函数 对于这样的类型,这是一个错误,但是使用简单的Int64数组就可以了 说 如何将该输出转换为Int64数组 在这种情况下,以下内容可以工作,并且可以在函数中收集,但必须有一种更优雅的方式 julia> subtypes = Base.uniontypes(eltype(output)) 2-element Vector{Any}:
indexin
)的输出具有向量{Union{Nothing,Int64}
类型,但是预先知道只输出值(无
无)。
并且该输出应馈送至另一个函数
对于这样的类型,这是一个错误,但是使用简单的Int64
数组就可以了
说
如何将该输出转换为Int64
数组
在这种情况下,以下内容可以工作,并且可以在函数中收集,但必须有一种更优雅的方式
julia> subtypes = Base.uniontypes(eltype(output))
2-element Vector{Any}:
Nothing
Int64
julia> no_Nothing = filter(!=(Nothing), subtypes)
1-element Vector{Any}:
Int64
julia> new_eltype = Union{no_Nothing...}
Int64
julia> Array{new_eltype}(output)
2-element Vector{Int64}:
1
2
试着做点什么
:
julia> output = Union{Nothing, Int64}[1, 2]
2-element Vector{Union{Nothing, Int64}}:
1
2
julia> something.(output)
2-element Vector{Int64}:
1
2
或者,您可以使用Int.(输出)
强制键入Int
。这是使用Julia的广播语法将Int
的“构造器”应用于向量的所有条目。在本例中,某些东西可以工作,但一般来说,如果它出现在数组中,它会展开一些,因此它并不理想。自动eltype
缩小AFAICT的一般方法是调用identity.(output)
或只调用[v代表v在output]
。我认为如果在这里看到什么都没有
,就会出现错误。如果您愿意,您可以执行操作。(输出,0)
以明确提供在这种情况下应提供的内容。在问题中,明确说明“事先知道只有值才会输出”。因此,我给出了答案。
julia> output = Union{Nothing, Int64}[1, 2]
2-element Vector{Union{Nothing, Int64}}:
1
2
julia> something.(output)
2-element Vector{Int64}:
1
2