gpt4 book ai didi

julia - 在 Julia 中连接 ArrayViews(或 sliceviews 或 SubArrays)?

转载 作者:行者123 更新时间:2023-12-04 14:48:19 25 4
gpt4 key购买 nike

有没有办法在 Julia 中连接 ArrayViews,而不复制底层数据? (如果能解决问题,我也很乐意使用 SubArray。)

例如,在下面的代码中,我想要一个 ArrayView 来引用 y1 中的数据。和 y2 .

julia> x = [1:50];

julia> using ArrayViews;

julia> y1 = view(x, 2:5);

julia> y2 = view(x, 44:48);

julia> concat(y1, y2) # I wish there were a function like this
ERROR: concat not defined

julia> [y1, y2] # This copies the data in y1 and y2, unfortunately
9-element Array{Int64,1}:
2
3
4
5
44
45
46
47
48

最佳答案

不直接。但是您可以使用以下内容滚动您自己的类型:

julia> type CView{A<:AbstractArray} <: AbstractArray
a::A
b::A
end

julia> import Base: size, getindex, setindex!

julia> size(c::CView) = tuple([sa+sb for (sa, sb) in zip(size(c.a), size(c.b))]...)
size (generic function with 57 methods)

julia> getindex(c::CView, i::Int) = i <= length(c.a) ? getindex(c.a, i) : getindex(c.b, i)
getindex (generic function with 180 methods)

julia> c = CView(y1, y2);

julia> size(c)
(9,)

julia> c[1]
2

julia> c[4]
5

julia> c[5]
48

这些方法可能不是最佳的,但它们肯定可以帮助您入门。为了有用,可能需要更多的方法。请注意,关键在于决定要索引到哪个成员数组。用于多维索引 sub2ind可以使用。

关于julia - 在 Julia 中连接 ArrayViews(或 sliceviews 或 SubArrays)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30007902/

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