arrays - Julia:初始化不同类型的数值数组

标签 arrays types type-conversion julia variable-declaration

我试图在 Julia 中构建一个两元素数组,其中每个子数组都有不同的类型(一个是 Int64 的向量,另一个是 Float32 的数组)。
下面的代码会自动转换我想成为 Int64 的元素成Float32 ,这是我不想要的:

my_multitype_array = [ collect(1:5), rand(Float32,3) ]
生成的数组会自动转换 Int64第一个数组中的 s(通过 collect(1:5) 定义)转换为 Float32 ,以及由此产生的 my_multitype_array有类型 2-element Array{Array{Float32,1}} .如何强制它使第一个子阵列保持Int64 ?我是否需要预先定义 my_multitype_array在用值填充之前是一个包含两个所需类型元素的空数组?
最后,一旦我有了不同类型的所需数组,在函数中预先声明它的类型时,我将如何引用它?请参阅下文了解我的意思:
function foo_function(first_scalar_arg::Float32, multiple_array_arg::Array{Array{Float32,1}})
       # do stuff
       return
end
而不是 ::Array{Array{Float32,1}} , 我会写 ::Array{Array{Any,1}}或者其他的东西?

最佳答案

我认为以下代码更符合问题中的要求:

julia> a = Union{Array{Int},Array{Float64}}[[1,2,3],rand(2,2)]
2-element Array{Union{Array{Float64,N} where N, Array{Int64,N} where N},1}:
 [1, 2, 3]
 [0.834902264215698 0.42258382777543124; 0.5856562680004389 0.6654033155981287]
这将创建一个实际的数据结构,它知道它包含 Float64Int数组。
一些用法
julia> a[1]
3-element Array{Int64,1}:
 1
 2
 3

julia> a[2]
2×2 Array{Float64,2}:
 0.834902  0.422584
 0.585656  0.665403
并操纵结构:
julia> push!(a, [1, 1]); #works

julia> push!(a, [true, false]);
ERROR: MethodError: no method matching Union{Array{Float64,N} where N, Array{Int64,N} where N}(::Array{Bool,1})

关于arrays - Julia:初始化不同类型的数值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62995851/

相关文章:

c++ - 我的 append 功能没有按预期工作。 C++

list - 展平列表列表

.net - 如何检索 .net 中泛型 IEnumerable 中使用的泛型类型?

c++ - C++ 中的 TCHAR* 到 char* 转换

c - 从 C 中的十六进制字符串获取 uint

javascript - 为什么函数在数组中执行但与 jquery 一起使用时不执行 'when'

Java 在给定类数组时重载 toString() 方法

javascript - 使用分隔符将二维数组分成多个数组

ReactJS 失败的 Prop 类型,值为 'undefined'

java - 理解二进制补码中的十六进制数到十进制数 - Java