在ruby中选择二维数组的列方式
我有一个2d数组在ruby中选择二维数组的列方式,ruby,multidimensional-array,Ruby,Multidimensional Array,我有一个2d数组a=[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]. 我想按列访问此数组。 诸如此类- A[all][0] -> [a1,b1,c1] 我如何才能做到这一点?使用以下方法: 根据你的评论,我建议使用class。创建矩阵对象后,可以按行或列访问其元素 我会使用,但这里有一个替代使用: 如果相反 a = [[1,2,3],[4,5,6],[7,8,9]] 您不介意更改a,您可以这样做: a.shift.zip(*a).first #=> [1, 4
a=[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3].
我想按列访问此数组。
诸如此类-
A[all][0]
-> [a1,b1,c1]
我如何才能做到这一点?使用以下方法:
根据你的评论,我建议使用class。创建矩阵
对象后,可以按行或列访问其元素
我会使用,但这里有一个替代使用:
如果相反
a = [[1,2,3],[4,5,6],[7,8,9]]
您不介意更改a
,您可以这样做:
a.shift.zip(*a).first #=> [1, 4, 7]
另一种选择是使用: 可以根据需要转换为一种方法。简单回答:
A_t = A.tranpose
A_t[0]
谢谢你的回答。但出于我的好奇心,不使用转置法,这可能吗?是否有任何符号可以选择所有索引?有时最简单的是最好的。其他方法(包括我的)在只需要部分阵列时操作整个阵列。
a = [[1,2,3],[4,5,6],[7,8,9]]
a.shift.zip(*a).first #=> [1, 4, 7]
A = [["a1","a2","a3"],["b1","b2","b3"],["c1","c2","c3"]]
=> [["a1", "a2", "a3"], ["b1", "b2", "b3"], ["c1", "c2", "c3"]]
>> col = 0
=> 0
>> A.map{|a| a[col]}
=> ["a1", "b1", "c1"]
A_t = A.tranpose
A_t[0]