Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ruby中选择二维数组的列方式_Ruby_Multidimensional Array - Fatal编程技术网

在ruby中选择二维数组的列方式

在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

我有一个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, 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]