gpt4 book ai didi

python - Julia 中类似 Numpy 的切片

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:55 25 4
gpt4 key购买 nike

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

arr = np.ones((3,4,5))
arr[2]

形状将保持不变:

(arr[2]).shape # prints (4, 5)

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

arr = np.ones((3,4,5,2,2))
(arr[2]).shape # prints (4, 5, 2, 2)

如果我想编写适用于 N 维数组并保留其输出的函数,这非常好。

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

arr = ones(3,4,5)
size(arr[3]) # prints () (0-dimensinoal)
size(arr[3,:]) # prints (20,)

因为部分线性索引。因此,如果想保留原始尺寸,我需要编写 arr[3,:,:],它仅适用于 3D 数组。如果我想要一个 4D 数组,我将不得不使用 arr[3,:,:,:] 等等。代码不通用。

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

有什么方法可以让我像在 Python 中那样编写代码并使它通用?我什至想不出一种使用 reshape 的简洁方式,更不用说像 Python 一样简洁的方式了。

最佳答案

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

关于python - Julia 中类似 Numpy 的切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50554019/

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