gpt4 book ai didi

arrays - 嵌套数组切片

转载 作者:行者123 更新时间:2023-12-02 08:17:00 24 4
gpt4 key购买 nike

假设我有一个向量数组:

""" simple line equation """
function getline(a::Array{Float64,1},b::Array{Float64,1})
line = Vector[]
for i=0:0.1:1
vector = (1-i)a+(i*b)
push!(line, vector)
end
return line
end

此函数返回包含 x-y 位置的向量数组

Vector[11]
> Float64[2]
> Float64[2]
> Float64[2]
> Float64[2]
.
.
.

现在我想分离这些向量的所有 x 和 y 坐标,以使用 plotyjs 绘制它们。

我已经测试了一些方法但没有成功!在 Julia 中实现此目标的正确方法是什么?

最佳答案

你可以广播getindex:

xs = getindex.(vv, 1)
ys = getindex.(vv, 2)

编辑 3:

或者,使用列表理解:

xs = [v[1] for v in vv]
ys = [v[2] for v in vv]

编辑:

出于性能原因,您应该使用 StaticArrays 来表示 2D 点。例如:

getline(a,b) = [(1-i)a+(i*b) for i=0:0.1:1] 

p1 = SVector(1.,2.)
p2 = SVector(3.,4.)

vv = getline(p1,p2)

广播 getindex 和列表理解仍然有效,但您也可以重新解释 向量作为 2×11 矩阵:

to_matrix{T<:SVector}(a::Vector{T}) = reinterpret(eltype(T), a, (size(T,1), length(a)))

m = to_matrix(vv)

请注意,这不会复制数据。您可以直接使用 m 或定义,例如

xs = @view m[1,:]
ys = @view m[2,:]

编辑 2:

顺便说一句,不限制 getline 函数的参数类型有很多优点,通常是首选。上面的版本将适用于任何使用标量和加法实现乘法的类型,例如,immutable Point ... end 的可能实现(不过要使其完全通用还需要更多工作) .

关于arrays - 嵌套数组切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41183481/

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