gpt4 book ai didi

pointers - Julia 中的重叠数组 - 带指针的解决方案?

转载 作者:行者123 更新时间:2023-12-03 06:29:24 28 4
gpt4 key购买 nike

我有一个大型 Float64 数组 x,并且经常将其中的一个切片视为矩阵,然后再精确更改该切片。我可以以某种方式将该切片称为 y 吗?它已经具有正确的形状。至

x=zeros(10000)
y=x[10:18]
reshape!(y,(3,3))
y=y+eye(3) # this doesn't change x

这不起作用,因为 x[10:18] 创建了一个副本。我查看了 pointer_to_array 但无法解决。

最佳答案

在 Julia 中生成无复制切片的常用工具是 SubArrays :

x = zeros(10000)
y = sub(x, 10:18)

现在改变y将会改变x的相应元素。 (您还可以使用 slice,它对于高维数组的行为有所不同)。

您还可以使用y = sub(x, A),其中A是索引数组。不幸的是,reshape(y, 3, 3) 通过将 SubArray 转换为 Array 来生成值的副本(当前在 Julia issue 9874 中讨论,因此将来可能会发生变化)。使用 y = sub(x, A)A 正确形状的索引矩阵不起作用。

也许对于您的特定应用程序来说,这样做就足够了

x = zeros(10000)
y = sub(x, 10:18)
y[:] += vec(eye(3))

它会根据您的需要更改x,而不会产生不同形状的切片。

关于pointers - Julia 中的重叠数组 - 带指针的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32416984/

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