gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:25:10 28 4
gpt4 key购买 nike

我试图在 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/

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