gpt4 book ai didi

arrays - 在 Julia 中将 Array{Array{Float64,1},1} 转换为 Array{Float64,2}

转载 作者:行者123 更新时间:2023-12-04 06:24:33 25 4
gpt4 key购买 nike

我的问题类似于 earlier 描述的问题, 不同的是我不手动输入数字。因此那里接受的答案对我不起作用。

我想将笛卡尔坐标的向量转换为极坐标:

function cart2pol(x0,
x1)
rho = sqrt(x0^2 + x1^2)
phi = atan2(x1, x0)
return [rho, phi]
end

@vectorize_2arg Number cart2pol

function cart2pol(x)
x1 = view(x,:,1)
x2 = view(x,:,2)
return cart2pol(x1, x2)
end



x = rand(5,2)

vcat(cart2pol(x))

最后一个命令由于某种原因没有收集数组,返回类型为 5-element Array{Array{Float64,1},1} 的输出。知道如何将其转换为 Array{Float64,2} 吗?

最佳答案

如果你看cat的定义(这是hcatvcat的底层函数),你会发现你可以收集多个数组合并为一个维数为 2 的数组:

cat(2, [1,2], [3,4], [5,6])

2×3 Array{Int64,2}:
1 3 5
2 4 6

这基本上就是你想要的。问题是您将所有输出极点都放在数组本身中。 cat 期望您将它们作为多个参数提供。这就是 ... 的用武之地。

... used to cause a single function argument to be split apart into many different arguments when used in the context of a function call.

因此,你可以写

cat(2, [[1,2], [3,4], [5,6]]...)

2×3 Array{Int64,2}:
1 3 5
2 4 6

在您的情况下,它的工作方式完全相同(我将您的 x 更改为将点放在列中):

x=rand(2,5)
cat(2, cart2pol.(view(x,1,:),view(x,2,:))...)

2×5 Array{Float64,2}:
0.587301 0.622 0.928159 0.579749 0.227605
1.30672 1.52956 0.352177 0.710973 0.909746

关于arrays - 在 Julia 中将 Array{Array{Float64,1},1} 转换为 Array{Float64,2},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43712385/

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