gpt4 book ai didi

arrays - 将二维数组传递给Julia中的函数

转载 作者:行者123 更新时间:2023-12-04 16:43:14 26 4
gpt4 key购买 nike

我有一个定义为的三维数组:

x=zeros(Float64,2,2,2)

我想将一个分配给 x通过 x到一个函数,一次一层。
功能是:
function init(p,y)
y=ones(p,p)
end

我会通过 x如下:
for k=1:2
init(2,x[2,2,k])
end

但是当我这样做时, x是零,不是一。为什么?
julia> x
2x2x2 Array{Float64,3}:
[:, :, 1] =
0.0 0.0
0.0 0.0

[:, :, 2] =
0.0 0.0
0.0 0.0

知道如何让 Julia 分配给 x ?

最佳答案

一种可能的解决方案是使用 slice ,这使得 SubArray :

x = zeros(2, 2, 2)  # Float64 by default

function init!(y)
y[:] = ones(y) # change contents not binding
end

for k in 1:2
init!(slice(x, :, :, k)) # use slice to get SubArray
end

请注意,您可以使用 ones(y)得到一个与 y 大小相同的向量.

一个 SubArray给出数组的 View ,而不是副本。在 Julia 的 future 版本中,索引数组可能会默认提供此功能,但目前您必须明确执行此操作。

有关值与绑定(bind)的讨论,请参阅

http://www.johnmyleswhite.com/notebook/2014/09/06/values-vs-bindings-the-map-is-not-the-territory/

编辑:我没有看到@tholy 的答案,其中包含相同的想法。

关于arrays - 将二维数组传递给Julia中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32465746/

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