プログラミング入門として、Pythonで行列計算を行うプログラムを作成します。
配列(行列)の基本的な使い方から簡単な計算方法までを初心者向けに解説していきます。
今回はPythonの数値計算ライブラリのNumPy(Numerical Python)を使用します。
NumPyは高速な配列処理や線形代数計算などの数学的な処理が可能です。
作業時間は15分程度です。
環境について
今回の解説は、PCにPython3、NumPyをインストールした環境で行います。
また、Pythonの開発環境として、Visual Studio Code(VS Code)をおすすめしています。
まだインストールしていない場合は、次の記事を参考にしてください。
Windowsの場合
Pythonをまだインストールしていない方はこちらから
NumPyをまだインストールしていない方はこちらから
VS Codeをまだインストールしていない方はこちらから
Ubuntu(Linux)の場合
学習用にLinux環境でプログラミングしたい場合はこちらの記事を参考にしてください。
UbuntuはあらかじめPythonがインストールされています。
NumPyをまだインストールしていない方はこちらから
VS Codeをまだインストールしていない方はこちらから
Google Colaboratoryの場合
Google Colaboratory(グーグルコラボラトリー)はGoogleが提供するクラウド上の開発環境です。
無料で利用することができます。
Google ColabはNumPyを始め多くのライブラリがインストール済なので、環境構築に時間をかけることなくスムーズにプログラミングを進めることができます。
Google Colabの始め方はこちらの記事で紹介しています。
\未経験でも”AI”を基礎から学べる Python特化型プログラミングスクール/
1次元配列を作ってみる
まずは1次元配列を作ってみます。
1次元配列はデータが1列に並んだものです。
たとえば次のようなものをイメージしてください。
[0]、[1]、[2]と書かれた箱の中に、数値が書かれた丸が入っています。
この丸が計算等に使用するデータです。
これをNumPyを使って表現すると次のように記述できます。
import numpy
a = numpy.array([8, 9, 3])
print(a)
入力できたら実行してみましょう。
VS Codeを使っている場合は画面右上の実行ボタン▷から実行できます。
実行結果は次のようになります。
[8 9 3]
1次元配列が表示されました。
プログラムを1行ずつ解説します。
最初の行ではNumPyを使うための準備として、インポートという記述をしています。
NumPyを使う際は必ずこのような記述が必要です。
import numpy
次の行では、numpyのarrayという機能を使って配列を作成しています。
([ ])の中に『 , (カンマ)』区切りで数値を入力することで、配列を作成できます。
作成した配列は『 = (イコール)』で『 a 』という入れ物に入れています。
a = numpy.array([8, 9, 3])
次のようなものをイメージしていただくとわかりやすいかもしれません。
最後に、配列の入った『 a 』を表示しています。
表示するにはprintという機能を使います。
print( )の中に記述した内容が実行結果として表示されます。
print(a)
配列の数値を変更したり、追加したりして使い方になれてみてください。
ちなみに配列の要素(箱)の番号は0からの連番となります。
日常生活で使う数値は1から数え始める方が多いため違和感があるかもしれませんが、
Pythonをはじめとする多くのプログラミング言語では、数値は0から始まるので覚えておきましょう。
配列の要素を操作してみる
次に配列の要素(箱)ごとの操作について解説します。
さきほどのイメージのような配列で考えた場合、たとえば[1]の箱に入ったデータだけを表示したいとします。
次のように記述してみましょう。
変更点は最後の行のみです。
import numpy
a = numpy.array([8, 9, 3])
print(a[1])
実行結果は次のようになります。
9
このように、aの配列のなかの[1]の中身を操作したいときは、a[1]のように記述します。
では、次にa[1]の中の数値を変更してみましょう。
次のように記述します。
import numpy
a = numpy.array([8, 9, 3])
print(a)
a[1] = 7
print(a)
実行結果は次のようになります。
[8 9 3]
[8 7 3]
このように、a[1]の中身を変更したい場合は、『 = (イコール)』で変更する値を代入します。
変更前と変更後で、a[1]の値が9から7に代わっていることを確認できます。
\未経験でも”AI”を基礎から学べる Python特化型プログラミングスクール/
2次元配列を使ってみる
続いて2次元配列(行列)を作成してみます。
1次元配列では列のみでしたが、2次元配列は行が加わります。
次のようなものをイメージしてください。
配列の要素(箱)の番号も一つでは表現できなくなるので、行の番号と列の番号が2つ並びます。
NumPyを使った2次元配列は次のように記述できます。
入力が面倒であればコピペしてください。
import numpy
a = numpy.array([[8, 9, 3], [5, 0, 1]])
print(a)
実行結果は次のようになります。
[[8 9 3]
[5 0 1]]
2次元配列でも要素を表示・変更してみましょう。
次のように記述します。
import numpy
a = numpy.array([[8, 9, 3], [5, 0, 1]])
print(a[0][1])
a[0][1] = 7
print(a[0][1])
実行結果は次のようになります。
9
7
このように2次元配列では要素番号をa[ ][ ]のように表現します。
a[0][1]に入っている9が7に変更される前後の様子が確認できます。
行列計算をやってみる
続いて配列(行列)同士の計算を行ってみます。
NumPyを使うと簡単に行列計算を行うことができます。
今回は例として次のような配列同士を足し算してみます。
結果としてはそれぞれの行、列要素に対応した値同士を足した配列が出力されます。
この計算をNumPyで行う場合は次のように入力してみましょう。
import numpy
a = numpy.array([[8, 9, 3], [5, 0, 1]])
b = numpy.array([[2, 2, 2], [2, 2, 2]])
c = a + b
print(c)
入力できたら実行してみましょう。
実行結果は次のようになります。
[[10 11 5]
[ 7 2 3]]
aという配列、bという配列を用意し、aとbを足し算した結果をcに入力しています。
ちなみに、このように全て同じ値の配列で計算する場合は、次のように記述することも出来ます。
実行結果は同じになります。
import numpy
a = numpy.array([[8, 9, 3], [5, 0, 1]])
c = a + 2
print(c)
その他、引き算、かけ算、割り算も同様に次のように記述ができます。
c = a + b
d = a - b
e = a * b
f = a / b
\未経験でも”AI”を基礎から学べる Python特化型プログラミングスクール/
3次元配列を使ってみる
最後に3次元配列を作成してみます。
2次元配列の行列に奥行きが加わります。
次のようなものをイメージしてください。
(奥の数値が見えないので透過しています。)
ここまでくると、2次元配列の場合と同じパターンです。
配列の要素(箱)の番号も2つでは表現できなくなるので、行の番号、列の番号、奥行きの番号が3つ並びます。
NumPyを使った3次元配列は次のように記述できます。
入力が面倒であればコピペしてください。
import numpy
a = numpy.array([[[8, 9, 3], [5, 0, 1]], [[5, 6, 4], [5, 8, 1]]])
print(a)
Pythonはソースコードを途中で改行することも可能です。
一行で書くとわかりにくい場合は次のように改行するといいでしょう。
import numpy
a = numpy.array([[[8, 9, 3], [5, 0, 1]],
[[5, 6, 4], [5, 8, 1]]])
print(a)
実行結果は次のようになります。
[[[8 9 3]
[5 0 1]]
[[5 6 4]
[5 8 1]]]
実行画面では立体を表現できませんので、このように2次元配列が上下に並んで表示されます。
配列の各要素を指定する場合も2次元配列と同様に[ ]が一つ追加されるだけです。
import numpy
a = numpy.array([[[8, 9, 3], [5, 0, 1]],
[[5, 6, 4], [5, 8, 1]]])
print(a[0][1][1])
a[0][1][1] = 7
print(a[0][1][1])
実行結果は次のようになります。
0
7
以上、NumPyを使った基本的な配列の作り方から簡単な計算方法までを解説しました。
NumPyは他にも便利な機能がたくさんありますので、今後もご紹介していきます。
なにか作ってみる
次の記事ではPythonを使って初心者向けに画像認識AIを作成・解説しています。
「AIを学びたいけど、どの解説も理論ばかりでよくわからん」
という方に向けて、理論は最小限にまずはご自身のPCにプログラミング環境を用意し、実際にAIプログラミングを体験することで最初のステップ踏んでみようという記事です。
Tensorflowの学習済みのモデルであるInceptionV3を活用することで、初心者でも簡単にAI画像認識を体験することができます。
AI技術に興味がある方はぜひ参考にしてください。
Pythonの魅力
Pythonは世界的にも人気の高いプログラミング言語のひとつです。
汎用性が高く、データ分析やWebアプリの開発等、幅広い分野で使用されているほか、日本の市場で今後も拡大することが予想されるAI(機械学習、ディープラーニング)技術との親和性も高く、Pythonを扱えるエンジニアの需要は伸びていくことが予想されます。
そのため開発言語として採用する企業も増えています。
市場動向調査では、Pythonエンジニアの求人倍率は約53倍と非常に高く、慢性的に人材が不足している状況です。
参考: レバテック『2021年12月のITエンジニア・クリエイター正社員転職/フリーランス市場動向』
また、プログラミング言語別の年収調査ではPythonは3位と高い水準にあり、中央値で575万円、最大提示年収で1,499万円と、日本人の年収の中央値397万円を大きく上回りました。
参考: BIZREACH『プログラミング言語別年収中央値を発表、求人検索エンジン「スタンバイ」調べ』
参考: 時事ドットコム『【2022年最新】日本の「平均年収」「年収中央値」を調査』
このように、Pythonは将来性の高いプログラミング言語と言えるでしょう。
就職、転職、副業を目指す上で、身につけておきたいスキルです。
Pythonの学習難易度は他のプログラミング言語と比べると比較的低いとされています。
独学で習得することも可能ですが、近年はオンラインスクールを利用して短期間で集中して実務レベルまで習熟させるという方も増えています。
プログラミングのオンラインスクールを活用する場合は、現役のエンジニアが講師となるスクールが優位でしょう。開発現場で通用する質の高い実務ノウハウを学ぶことができます。
また、オンラインスクールであれば全国どこからでも受講できるため、わざわざ都会へ出たり交通費をかけることなく、ライフスタイルに合わせて効率的にスキルを身につけることができることが魅力です。
ITエンジニアとして働き高い収入を得るための先行投資として、オンラインスクールは一つの選択肢となり得るでしょう。
無料体験できるオンラインスクールもあるため、独学でも習得できそうか、短期集中で学んだ方がいいのか、ご自身の力量を見極めてみるのもいいのではないでしょうか。
こちらの記事ではオンラインスクールを受講する価値はあるのかについて解説しています。あわせてどうぞ
コメント