如何在 Julia 中的特定轴上对高阶多维数组(或张量)进行切片?

Sak*_*.JJ 5 multidimensional-array julia tensor

我在用Julia1.6

这里,X是一个D阶多维数组。如何在 的第 轴上从i到进行切片?jdX

D=6这是和情况下的示例d=4

X = rand(3,5,6,6,5,6)
Y = X[:,:,:,i:j,:,:]
Run Code Online (Sandbox Code Playgroud)

i在上例中,和j的给定值都小于 6。

ARa*_*rez 3

您可以使用内置函数selectdim

\n
help?> selectdim\nsearch: selectdim\n\n  selectdim(A, d::Integer, i)\n\n  Return a view of all the data of A where the index for dimension d equals i.\n\n  Equivalent to view(A,:,:,...,i,:,:,...) where i is in position d.\n\n  Examples\n  \xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\xe2\x89\xa1\n\n  julia> A = [1 2 3 4; 5 6 7 8]\n  2\xc3\x974 Matrix{Int64}:\n   1  2  3  4\n   5  6  7  8\n\n  julia> selectdim(A, 2, 3)\n  2-element view(::Matrix{Int64}, :, 3) with eltype Int64:\n   3\n   7\n
Run Code Online (Sandbox Code Playgroud)\n

其用途如下:

\n
julia> a = rand(10,10,10,10);\n\njulia> selectedaxis = 5\n5\n\njulia> indices = 1:2\n1:2\n\njulia> selectdim(a,selectedaxis,indices)\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,在文档示例中,i 是一个整数,但您可以使用以下形式的范围i:j也可以使用以下形式的范围。

\n