朱莉娅那种像Numpy一样的切片

Tom*_*Cho 3 python arrays julia

在Python/Numpy中,我可以使用以下形式对数组进行切片:

arr = np.ones((3,4,5))
arr[2]
Run Code Online (Sandbox Code Playgroud)

并保持形状:

(arr[2]).shape # prints (4, 5)
Run Code Online (Sandbox Code Playgroud)

这意味着,如果我想保持数组的形状,以下代码适用于N维数组

arr = np.ones((3,4,5,2,2))
(arr[2]).shape # prints (4, 5, 2, 2)
Run Code Online (Sandbox Code Playgroud)

如果我想编写适用于保留其输出的N-dim数组的函数,那就太棒了.

然而,在Julia中,相同的动作不保留结构:

arr = ones(3,4,5)
size(arr[3]) # prints () (0-dimensinoal)
size(arr[3,:]) # prints (20,)
Run Code Online (Sandbox Code Playgroud)

因为部分线性索引.因此,如果想保留我需要编写的原始尺寸arr[3,:,:],这只适用于3D阵列.如果我想要一个4D阵列,我将不得不使用arr[3,:,:,:]等等.代码不一般.

此外,当你到达5维或更多的数组(我现在正在使用的情况)时,这种表示法变得非常麻烦.

有没有什么办法可以像在Python中编写代码一样编写代码?我甚至想不到一个漂亮的干净方式,更像是一种像Python一样干净的方式.

jul*_*ohm 5

请注意,在Python中,只有在切割数组的第一个维度时才会保留形状.在Julia中,您可以使用在索引处对数组的slicedim(A, d, i)维度进行切片.dAi