如何在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)