arrays - 如何获取数组类型参数

标签 arrays types julia

在 Julia 中,如果我使 x = rand(10,2),那么

>> typeof(x)
Matrix{Float64} (alias for Array{Float64, 2})

如何访问类型参数,即如何获取数组 xFloat642 的数组?

最佳答案

(顺便说一句:正如您的标题所说,您不是在寻找“子类型”,而是在寻找“类型参数”。)

元素类型很容易用eltype获取:

jl> eltype(x)
Float64

维度可以从数组的size中获取:

jl> length(size(x))
2

编辑:最好使用 ndims:

jl> ndims(x)
    2

如果您无权访问 x 本身,而只能访问其类型,eltype 仍然有效:

jl> T = typeof(x);

jl> eltype(T)
Float64

维度有点难。您可以检查类型变量的属性(但我不建议这样做,因为这是该类型的内部实现细节,可能不稳定):

jl> T.parameters
svec(Float64, 2)

jl> T.parameters[2]

更好的方法可能是创建一个函数来为您获取此信息:

jl> dims(::Type{<:AbstractArray{T, N}}) where {T, N} = N
dims (generic function with 3 methods)

jl> dims(T)
2

编辑:您也可以将 ndims 与类型变量一起使用:

jl> ndims(T)
2

所以,实际上,答案是:eltype 表示元素类型,ndims 表示维数,无论是数组还是类型一个数组。

关于arrays - 如何获取数组类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67821272/

相关文章:

c# - "Store"稍后在 C# 中使用的类型参数?

c - 移位计数大于类型宽度

c++ - 如何检测对象来自哪个类? Qt

julia - Searchlight.jl 支持哪些数据类型?

c++ - 一个有效的 std::copy 示例——打印一个数组

java - List 中的对象具有相同的值 - 最后添加的元素的值

julia - `isbits` 类型参数的算术运算

plot - 在Gadfly中使用Geom.subplot_grid时如何将参数发送到Geom.histogram?

javascript - HTML/JS - 保存数据-*以供以后使用

javascript - 检查项目是否存在于数组 React 中