Arrays 如何在Julia中按行压缩二维和一维数组?

Arrays 如何在Julia中按行压缩二维和一维数组?,arrays,julia,Arrays,Julia,如何在Julia中按行压缩具有“向量”的二维数组 这个 给出(1,-1),而我想得到([12],-1)如果您同意使用列向量进行输入和输出,则可以使用eachrow函数,该函数对矩阵的行进行迭代,并将行作为列向量返回: julia> X = [1 2; 3 4]; julia> Y = [-1, -2]; julia> collect(zip(eachrow(X), Y)) 2-element Array{Tuple{Array{Int64,1},Int64},1}: ([

如何在Julia中按行压缩具有“向量”的二维数组

这个


给出
(1,-1)
,而我想得到
([12],-1)

如果您同意使用列向量进行输入和输出,则可以使用
eachrow
函数,该函数对矩阵的行进行迭代,并将行作为列向量返回:

julia> X = [1 2; 3 4];

julia> Y = [-1, -2];

julia> collect(zip(eachrow(X), Y))
2-element Array{Tuple{Array{Int64,1},Int64},1}:
 ([1, 2], -1)
 ([3, 4], -2)
另一方面,如果需要压缩元组的第一个元素是行向量(如问题中所示),则可以将矩阵转换为行向量,然后使用
zip

julia> X = [1 2; 3 4];

julia> Y = [-1 -2];

julia> rows = [X[[i], :] for i in 1:size(X, 1)]
2-element Array{Array{Int64,2},1}:
 [1 2]
 [3 4]

julia> collect(zip(rows, Y))
2-element Array{Tuple{Array{Int64,2},Int64},1}:
 ([1 2], -1)
 ([3 4], -2)
注意,我在理解中使用了
X[[I],:]
,而不是
X[I,:]
,因此我们得到的是行数组而不是列向量数组

最后,请注意,
Y=[-1-2]
生成一个行向量。我们通常将向量表示为列向量:

julia> Y = [-1, -2]
2-element Array{Int64,1}:
 -1
 -2

Julia中有迭代器生成器:
eachrow
eachcol
,它们适用于数组并且简洁(至少在本例中):

然后

给予

julia> Y = [-1, -2]
2-element Array{Int64,1}:
 -1
 -2
X = [1 2; 3 4]
Y = [-1 -2]
z = zip(eachrow(X), eachcol(Y))
for el in z
    print(el)
end
([1, 2], [-1])
([3, 4], [-2])