如何在Julia中将二维数组转换为一维数组

如何在Julia中将二维数组转换为一维数组,julia,Julia,我有一个二维数组:a=[(1,2)(2,3);(3,4)(4,5)]我想转换成: (1, 2) (2, 3) (3, 4) (4, 5) #1D Array 我怎样才能在朱莉娅身上做到这一点 Julia提供了一个简单的接口,用于将二维数组转换为单个一维数组。需要注意的是,还有其他方法可以将二维数组转换为一维数组,但这些方法可能无法提供一维数组中相同的元素顺序 请参见下面的示例: julia> a = [ (1,2) (2,3) ; (3,4) (4,5)] 2×2 Array{Tuple

我有一个二维数组:
a=[(1,2)(2,3);(3,4)(4,5)]
我想转换成:

(1, 2)
(2, 3)
(3, 4)
(4, 5)
#1D Array

我怎样才能在朱莉娅身上做到这一点

Julia提供了一个简单的接口,用于将二维数组转换为单个一维数组。需要注意的是,还有其他方法可以将二维数组转换为一维数组,但这些方法可能无法提供一维数组中相同的元素顺序

请参见下面的示例:

julia> a = [ (1,2) (2,3) ; (3,4) (4,5)]
2×2 Array{Tuple{Int64,Int64},2}:
 (1, 2)  (2, 3)
 (3, 4)  (4, 5)

julia> reshape(a, 4, 1)
4×1 Array{Tuple{Int64,Int64},2}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)
# Note the order here may not be what you want. 

julia> b = [permutedims(a)...]
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (2, 3)
 (3, 4)
 (4, 5)


我还要对其他方法发表评论

前两个按列而不是按行遍历
矩阵

julia> a[:]
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)
它复制数据并:

julia> vec(a)
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)
它与
a
共享基础数据。这是一个结果:

julia> b = vec(a)
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)

julia> b[1] = (100, 100)
(100, 100)

julia> b
4-element Array{Tuple{Int64,Int64},1}:
 (100, 100)
 (3, 4)
 (2, 3)
 (4, 5)

julia> a
2×2 Array{Tuple{Int64,Int64},2}:
 (100, 100)  (2, 3)
 (3, 4)      (4, 5)
您可以使用一种明确的理解,它允许您以两种方式进行理解:

julia> [a[i,j] for j in axes(a, 2) for i in axes(a, 1)]
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)

julia> [a[i,j] for i in axes(a, 1) for j in axes(a, 2)]
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (2, 3)
 (3, 4)
 (4, 5)
julia> reduce(vcat, eachrow(a))
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (2, 3)
 (3, 4)
 (4, 5)

julia> reduce(vcat, eachcol(a))
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)
最后,您可以使用
vcat
,同样可以使用两种方式:

julia> [a[i,j] for j in axes(a, 2) for i in axes(a, 1)]
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)

julia> [a[i,j] for i in axes(a, 1) for j in axes(a, 2)]
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (2, 3)
 (3, 4)
 (4, 5)
julia> reduce(vcat, eachrow(a))
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (2, 3)
 (3, 4)
 (4, 5)

julia> reduce(vcat, eachcol(a))
4-element Array{Tuple{Int64,Int64},1}:
 (1, 2)
 (3, 4)
 (2, 3)
 (4, 5)