ネストされた配列を行列とみなして行と列を入れ替える

広告

配列に要素として他の配列が格納されている場合に、配列を行列と見なし行と列を入れ替える方法を確認します。Arrayクラスで用意されている「transpose」メソッドを使います。

Arrayオブジェクト.transpose

「transpose」メソッドは行と列を入れ替えた新しい配列を返します。

具体的に見ていきます。例えば配列として次のような配列を考えてみます。

ary = [[1, 2], [3, 4], [5, 6]]

この配列は3つの要素を持ち、それぞれが2つの要素を持つ配列となっています。この配列を次のような行列と見なします。

ary =[[1, 2],
      [3, 4],
      [5, 6]]

「transpose」メソッドを使うと配列を行列と見なした場合の行と列を入れ替えます。

ary =[[1, 3, 5],
      [2, 4, 6]]

「transpose」メソッドを使う場合には元の配列の各要素が行列として成り立つように要素数などが同じでなければなりません。

サンプルプログラム

実際に試してみます。

LibraryArray20.rb

#! ruby -Ks

ary = [["suzuki", 89], ["yamada", 76], ["itou", 69]]
p ary

newary = ary.transpose
p newary

実行結果は次のようになります。

ネストされた配列を行列とみなして行と列を入れ替える

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)