最近、3次元配列を扱うことになったのですが、直感的なイメージができず頭の中が混乱してしまいました。
どのように3次元配列をどのように理解すればよいか、自分なりの答えがでたので記事にします!
\オススメプログラミングスクール7選!/
スクール名 | 侍エンジニア塾 | DMM WEBCAMP | テックアカデミー | テックキャンプ | ドットプロ | Aidemy Premium Plan | 0円スクール |
---|---|---|---|---|---|---|---|
イメージ | |||||||
学べる内容 |
|
|
|
|
|
|
|
スクールの特徴 |
|
|
|
|
|
|
|
無料説明会の内容 | プログラミングが向いているか?どの言語を学べばよいか?本当に未経験からエンジニアに転職できるのか?という疑問を解消できる | 無料カウンセリングでは、エンジニア転職の最新動向、あなたに合ったキャリアを提案! | 1週間のプログラミング体験(メンターに質問できる!)、無料カウンセリングは現役のエンジニアによる疑問解消! | IT業界の不明点、プログラミングの不明点の解消 | 無料カウンセリング。転職、受講に関する様々な疑問の解消 | 初めてのAI学習の不安や疑問の解消。転職や副業、未経験からの学習にまつわるお悩みも解消! | 転職、受講に関する様々な疑問の解消 |
無料説明会の参加特典 | ✔電子書籍プログラミング学習メソッドのプレゼント | 参加特典あり(時期によって異なります) | 要お問い合わせ | 要お問い合せ | 要お問い合せ | 要お問い合せ | 要お問い合せ |
公式サイトに行く | 公式サイト | 公式サイト | 公式サイト | 公式サイト | 公式サイト | 公式サイト | 公式サイト |
どんなときに3次元配列を使うの?
3次元配列が必要になるケース
・機械学習のRNNなどの時系列で処理するもの
・天気予報など時間の流れを考慮して予測。
・自然言語処理の分野において文章を学習させる
まずは2次元配列をイメージしてみる
2次元配列ならば、CSVファイルやエクセルファイルのように行と列(つまり行列)にデータがあるものとイメージできます。
都市 | 気温 | 降水量 | 風向 | 風速 | 湿度 | 気圧 |
---|---|---|---|---|---|---|
東京 | 25.3 | 0 | 南南西 | 2.4 | 89 | 1009.4 |
埼玉 | 25.2 | 0 | 西南西 | 1.2 | 89 | 1009.4 |
神奈川 | 24.6 | 0 | 南南東 | 0.4 | 97 | 1009.4 |
千葉 | 24.8 | 0 | 北西 | 2.3 | 98 | 1010.1 |
茨城 | 24.3 | 0 | 北西 | 1.3 | 100 | 1010.2 |
山梨 | 25 | 0 | 北西 | 1.6 | 99 | 1010.7 |
群馬 | 26 | 0 | 西北西 | 1.4 | 93 | 1011.3 |
2次元配列のイメージ
2次元配列のイメージは、以下のようなものです。
(行,列)
[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
3次元配列をイメージするとなると・・・
3次元配列の話になると途端に混乱してきます。
いきなり、イメージしようとしてもできるものではありません。
3次元配列の直感的なイメージとしては、行列が複数あるものと理解すると良いかもしれません。
エクセルの表であれば、シートが複数あるイメージです。
つまり1シートに行列でデータが入力されていて、それが日付ごとに複数のシートに記載されているイメージです。
3次元配列は、以下のようなデータの入り方がイメージできます。
■一般的な考え方
(奥行き,行,列)
■エクセルを例に取ると
(シート, 行,列)
3次元配列を天気予報のアメダスの例で解説
アメダスを例に3次元配列を解説します。
■アメダスのデータのもたせ方
奥行き・・・時系列(観測した時間)
行・・・都市の羅列
列・・・気温、降水量、風向きなどの観測項目
アメダスの例だと、奥行きの部分を天気を観測した時間、行を場所(都市名)ごと、列をそれぞれの項目とします。つまり、時間ごとに行列になったデータがあるイメージです。
■時系列のイメージ
3次元配列をPythonのnumpy.zeros関数で解説
せっかくなのでPythonで3次元配列を扱ってみます。
多次元配列を生成する際、zeros関数をよく使います。
numpy.zerosのマニュアル
https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros.html
簡単なソースコードを書いてみます。
import numpy as np
#奥行き(時系列)3, 5行、7列の3次元配列を記載する
data = np.zeros((3,5,7), dtype=np.int)
dataの出力結果は以下の通りで、
5行7列の行列が3つ(奥行き、または時系列)あることを確認できるかと思います。
array([[[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]],[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]],
[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]])
3次元配列をつかう1つのケースは、RNNを使って時系列データの処理をする場合です。
私は、kerasでSimpleRNNを使ってみたのですが、SimpleRNNにデータを渡す際に、データの構造を3次元配列にする必要がありました。kerasやSimpleRNNについては、別の機会に解説したいと思います。
AI(機械学習)を短期間で学ぶ方法
PythonとAI(機械学習)について、短期間で効率的に学ぶ方法を紹介します。
それは、プログラミングスクールを利用することです。
プログラミングスキルを習得している人でも機械学習の習得は、難しいため、独学で迷うよりは、プロに教えてもらったほうが遥かに最短経路で身につけることができます!
いますぐにでもAI(機械学習)が学べるプログラミングスクールを検討している方へ! [afTag id=2402] [template id="10277"] 筆者について 筆者は、AIプログラミン[…]
まとめ
3次元配列をイメージするのは、直感的にイメージするのは難しいかもしれませんが時系列で考えると比較的簡単にイメージできるかと思います。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |