重塑视图的功能?

Chr*_*kas 6 view julia

在Julia v0.5中,你如何创建一个像重塑一样的函数但是返回一个视图呢?ArrayViews.jl有一个reshape_view函数,但它似乎与新view函数不直接兼容.我只是想要reshape u一些sizeu我不知道尺寸的元组.

Tas*_*nou 7

如果您重塑"视图",则输出是重新整形的"视图".

如果您的初始变量是普通数组,则可以在函数调用期间将其转换为"动态"视图.

根据您之后的评论,在此操作期间没有重新分配:您可以使用该pointer功能进行确认.对象是不一样的,因为它们被解释为指向不同"类型"的指针,但内存地址是相同的.

julia> A = ones(5,5,5); B = view(A, 2:4, 2:4, 2:4); C = reshape(B, 1, 27);

julia> is(B,C)
false

julia> pointer(B)
Ptr{Float64} @0x00007ff51e8b1ac8

julia> pointer(C)
Ptr{Float64} @0x00007ff51e8b1ac8

julia> C[1:5] = zeros(1,5);

julia> A[:,:,2]
5×5 Array{Float64,2}:
 1.0  1.0  1.0  1.0  1.0
 1.0  0.0  0.0  1.0  1.0
 1.0  0.0  0.0  1.0  1.0
 1.0  0.0  1.0  1.0  1.0
 1.0  1.0  1.0  1.0  1.0
Run Code Online (Sandbox Code Playgroud)