【保存版】スプレッドシートで配列や行列を作成する方法まとめ

こんにちは、スプレッドシートが大好きなたぬ(@tanuhack)です!

配列や行列という言葉を聞くだけで、理系脳が燻られますね!笑

スプレッドシートで配列や行列について書かれている記事がなかったので、まとめました。

今回は、スプレッドシートで配列や行列を作成する方法を紹介します。

注意
注意書き

「なぜ、スプレッドシートで配列や行列を使うのか?」という質問は、この記事の理解の範疇を超えているので割愛させてください。

スプレッドシートで配列や行列を使うメリットは多いにあります。ですが、その内容に関しては別記事にまとめるので、そちらをご覧ください。

この記事では、あくまでスプレッドシートで配列や行列の作成方法だけを紹介します。あしからず。

1次元配列

1次元配列とは、1行n列で表される行列のことを言います。

,(カンマ)を使う

array-matrix-creation1
={1,1,1,1}
1行3列の1次元配列
={a,b,c}
a,b,cは文字列でも可。ただし、行列の計算はできなくなる。

スプレッドシートでは、数式内に{}を使用して配列を作ることが出来ます。

,(カンマ)で値を区切ると、カンマごと値が新しい列に配置されるようになります。

関数を使う

スプレッドシートでは、{}以外にも関数を使用して、無理やり1次元配列を作成することも出来るんですよ!

今回は2種類の方法を紹介します。

①ARRAYFORMULA関数とCOLUMN関数を組み合わせる

array-matrix-creation2
=ARRAYFORMULA((COLUMN(A1:D1)))
使う関数のおさらい
  1. ARRAYFORMULA関数:配列数式を作成する関数
    スプレッドシートの『ARRAYFORMULA』関数を使って表示速度を高速化させよう!check
  2. COLUMN関数:対象の列番号を取得する関数

②REPT関数とSPLIT関数の合わせ技

array-matrix-creation3
=SPLIT(REPT("1,",4),",")
使う関数のおさらい
  1. REPT関数:テキストを任意の数繰り返す関数
  2. SPLIT関数:テキストを決められた文字列で分割する関数

2次元配列

2次元配列とは、配列の中に配列が入っている配列のことを言います。

;(セミコロン)を使う

array-matrix-creation4
={{1,1,1,1};{1,1,1,1};{1,1,1,1};{1,1,1,1}}

;(セミコロン)で1次元配列を区切ると、セミコロンごとに1次元配列が新しい行に配置されるようになります。

正方行列を作成する

正方行列とは、n×nで表される縦と横の要素数が等しい行列です。

ちなみに先程の例も4行4列の正方行列になっています。

={{1,1,1,1};{1,1,1,1};{1,1,1,1};{1,1,1,1}}

次は関数を使って、正方行列を作成する方法を紹介します。

関数で正方行列を作成する

array-matrix-creation5
=ARRAYFORMULA((ROW(A1:A4)*COLUMN(A1:D1)))

正方行列は2次元配列なので、横に加えて高さが追加されます。

1次元配列がARRAYFORMULA関数とCOLUMN関数を使って表現できたので、2次元配列ではそこにROW関数(縦成分)を追加すればいいです。

ROW関数のおさらい
  • ROW関数:対象の行番号を取得する関数
  • 要素が全て1の正方行列を作成する

    先程、関数で正方行列を作成する方法を紹介しました。

    ですがこのままだと、計算に使うのには少し不向きなので、要素がすべて1の正方行列を作ってみます。

    array-matrix-creation6
    =ARRAYFORMULA((ROW(A1:A4)*COLUMN(A1:D1))^0)

    すべての要素を0乗して、要素が全て1の正方行列を作成することが出来ました。

    [応用]特殊な2次元配列

    このセクションでは大学の線形代数で習う、少しマニアックな行列について紹介します。

    (今は高校数学で習うみたいですね!僕はゆとり真っ只中だったので、大学時代に習いました)

    逆行列を作成する

    array-matrix-creation7

    逆行列の定義
    与えられたn次正方行列Aに対して右から掛けても左から掛けても単位行列Eとなるような行列をAの逆行列といい,A-1で表す

    スプレッドシートで逆行列を表示させるためには、MINVERSE関数を使います。

    array-matrix-creation8
    =MINVERSE(A1:B2)
    MINVERSE関数
    =MINVERSE(正則行列)

    正則行列:det(A)≠0を満たす正方行列

    単位行列を作成する

    array-matrix-creation9

    単位行列の定義
    任意のn次正方行列Aに対して右から掛けても左から掛けてもAとなるような行列を単位行列という
    array-matrix-creation11
    単位行列の具体例

    しかし、スプレッドシートでは単位行列を出してくれる関数は存在しません(※2018年10月6日現在)

    なので先程求めた、逆行列を使って単位行列を導き出す必要があります。

    array-matrix-creation10

    つまり単位行列は、行列Aと逆行列Aの内積で求めることが出来ます。

    内積計算する関数
    =MMULT(行列1,行列2)
    =MMULT(行列A,逆行列A)
    =単位行列E
    array-matrix-creation12

    転置行列

    array-matrix-creation13

    転置行列の定義
    m行n列の行列Aに対して、Aの(i,j)要素と(j,i)要素を入れ替えたn行m列の行列、つまり対角線で成分を折り返した行列のことである

    スプレッドシートで転置行列(行と列の入れ替え)を求める関数は、TRANSPOSE関数です。

    TRANSPOSE関数
    =TRANSPOSE(行列)
    array-matrix-creation14
    =TRANSPOSE(A1:C2)

    さいごに

    今回は、スプレッドシートで配列や行列を作る方法を紹介しました。

    あえて配列や行列を使うメリットは紹介していませんが、その内容は後日、ということで…。

    それでは。