gpt4 book ai didi

append - Julia 推!或追加!浮点值到整数数组

转载 作者:行者123 更新时间:2023-12-04 12:47:08 33 4
gpt4 key购买 nike

我在 Julia 中有一个整数向量,想向它推送一个浮点值,或者向它 append 一个浮点值集合,但是当我尝试这样做时,Julia 抛出了一个错误:

julia> v = [1,2,3]
3-element Array{Int64,1}:
1
2
3

julia> push!(v, 4.5)
ERROR: InexactError()
in push! at array.jl:432

julia> append!(v, [4.5, 5.2, 3.1])
ERROR: InexactError()
in copy! at abstractarray.jl:344
in append! at array.jl:447

如何将这些值添加到此数组中?

最佳答案

我认为您无法通过 append! 实现这一目标,因为在内部,append!使用 unsafe_copy!并且,正如文档所说:

The unsafe prefix on this function indicates that no validation is performed on the pointers dest and src to ensure that they are valid. Incorrect usage may corrupt or segfault your program, in the same manner as C.



可以在以下示例中看到这种行为,其中,即使使用
错误信息 InexactError ,内容 a向量无效。
julia> a=[1,2,3]
3-element Array{Int64,1}:
1
2
3

julia> append!(a,[3.14, 6.66, 1.61])
ERROR: InexactError()
in copy! at abstractarray.jl:344
in append! at array.jl:447

julia> a
6-element Array{Int64,1}:
1
2
3
9223372036854775807
18
-1

最安全的方法是与 vcat 进行连接。如下:
julia> a=[1,2,3]
3-element Array{Int64,1}:
1
2
3

julia> a=vcat(a, [3.14, 6.66, 1.61])
6-element Array{Float64,1}:
1.0
2.0
3.0
3.14
6.66
1.61

或者:
julia> a=[1,2,3]
3-element Array{Int64,1}:
1
2
3

julia> a=[a; [dec(3), "6.66", "test"]]
6-element Array{Any,1}:
1
2
3
"3"
"6.66"
"test"

注意,串联后,数组被提升为新类型
(分别为 Array{Float64,1}Array{Any,1} )。

更多信息:

Conversion and Promotion

Arrays - vcat

关于append - Julia 推!或追加!浮点值到整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35646429/

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