在Julia中正确地(un)压缩数组的方法

wpk*_*kzz 5 list scatter julia

我正在使用Julia中的PyPlot库进行绘图,并且散布函数似乎有一点"不便",即只接受坐标作为两个参数:一个数组用于所有x值,另一个用于所有y值,即

scatter(xxs,yys)
Run Code Online (Sandbox Code Playgroud)

x=[x1,x2,...],和y=[y1,y2,...].

如果我有一个具有坐标点的集合或元组,例如,

A=([x1,y1],[x2,y2],...)
Run Code Online (Sandbox Code Playgroud)

直接在Python中使用pyplot/matplotlib解决了一个内核中的不便,正如StackOverflow中所述:

plt.scatter(*zip(*li))
Run Code Online (Sandbox Code Playgroud)

但似乎Julia上的拉链完全不同.到目前为止,我已经提出了以下解决方案,但它似乎相当不优雅:

x=[]
y=[]
for j in selectos
  append!(x,j[2])
   append!(y,j[1])
end

scatter(x,y, marker="o",c="black")
Run Code Online (Sandbox Code Playgroud)

是否有更"功能"或单线(或双线)方法?

tim*_*tim 6

正如在另一个答案中提到的,可以在 Julia 中使用相同的方法,即scatter(zip(A...)...),但是对于较大的向量来说这非常慢,应该避免。

另一种可能性是用于getindex.(A, i)获取 中向量的所有i第 th 个元素的向量A

julia> A = [[i, 10i] for i=1:5]
5-element Array{Array{Int64,1},1}:
 [1, 10]
 [2, 20]
 [3, 30]
 [4, 40]
 [5, 50]

julia> getindex.(A,1)
5-element Array{Int64,1}:
 1
 2
 3
 4
 5

julia> getindex.(A,2)
5-element Array{Int64,1}:
 10
 20
 30
 40
 50
Run Code Online (Sandbox Code Playgroud)