Arrays 如何在Julia中按行压缩二维和一维数组?
如何在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}: ([
给出
(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])