ヒガサラblog

サラリーマン向けに、仕事を効率良く進めていくための方法についてご紹介しています。プログラミングから対人スキルまでを幅広く掲載中。

ヒガサラblog

【python】行列の積を一発計算する方法!numpy演習

f:id:yshgs_elec:20201211230229j:plain

pythonはAI開発にも用いられている近年人気のプログラミング言語です。

そういった背景からも勉強し始めた人も多いのではないでしょうか。

 

この記事ではそのようなpython初心者に向けて、

python上で行列の積を計算する方法

をご紹介します。

 

実際のプログラミングコードから実行結果まで、画像多めで解説していきますので、プログラミング初心者にも理解しやすい内容になっているはずです。

ぜひ最後までご覧ください。

 

それでは早速やっていきます!

 

エクセルでの事前計算

いきなりpythonのコードを紹介しても、初心者には理解しにくいでしょうから、まずはエクセルで行列計算を実施し、それとまったくおなじことをpython上で実行していく、という流れでご紹介していこうと思います。

 

というわけでまずはエクセル上での計算からやってみましょう。

 

今回は以下の画像のような3×3の行列A、行列Bを使って説明していきます。

 

行列Aと行列Bの積(J3からL4セル)についてはエクセルにあらかじめ備わっているMMULT関数(行列の積を計算できる関数)を使って算出しています。

きちんと高校数学で習った行列計算が行われていることを確認してみてください。

f:id:yshgs_elec:20201211221454j:plain

※MMULT関数の使い方について詳しく知りたい方は以下の記事をご覧ください。

【エクセル】行列の積を一発算出する方法!VBAへの組み込み方法まで!

 

というわけでエクセルでの事前計算は以上です。

 

ここからは上の画像で計算された行列の積をpython上で計算する方法をご紹介していきます。

python上で行列の積を計算する方法

今回はanacondaプロンプト上でコードを実行しながら説明していきます。

 

行列の積を計算する前に、そもそもベースとなる行列がなければはじまりませんので、まずはそこから準備しましょう。

※ここではnumpyというモジュールを用います。

インストールしていない方は

【python numpy インストール方法】

などと検索すればすぐにインストールできるはずです。

 

今回は先ほどのエクセル計算とまったく同じ行列2つを、numpyを使って以下のように作成しています。

f:id:yshgs_elec:20201211223448j:plain

◆行列作成コード

import numpy as np
MAT_A=np.array([[1,2,3],[2,3,4],[3,4,5]])
MAT_B=np.array([[5,4,3],[4,3,2],[3,2,1]])
print(MAT_A)
print(MAT_B)

 

積を計算する行列2つの作成が終わったところで、いよいよ行列の積の計算方法のご紹介です。

python上で行列の積を計算する方法は2つあります。

 

◆python&numpyを使って行列の積を計算する方法

np.dot(行列A,行列B)

np.matmul(行列A,行列B)

 

とはいえ、これだけ見せられてもよくわからないと思いますので実際の使用例をご紹介していきます。

 

以下がpython上で行列の積を計算した結果です。

 ※先ほどまでのコードの続きで実行しています。

f:id:yshgs_elec:20201211224417j:plain

◆エクセルでの計算結果おさらい

f:id:yshgs_elec:20201211221454j:plain

このようにnp.dotで計算したMAT_AB1もnp.mutmulで計算したMAT_AB2もエクセルでの計算結果とまったく同じ結果が出力されています。

※厳密にはこれらのdotとmatmulは条件によって使い分ける必要がありますので、興味がある人は調べてみてください。

 

というわけでpython上で行列の積を簡単に計算できることが確認できましたね。

 念のためここまでの実行コードをまとめて掲載しておきます。

 

◆ここまでのpythonコードまとめ 

import numpy as np
MAT_A=np.array([[1,2,3],[2,3,4],[3,4,5]])
MAT_B=np.array([[5,4,3],[4,3,2],[3,2,1]])
print(MAT_A)
print(MAT_B)
MAT_AB1=np.dot(MAT_A,MAT_B)
MAT_AB2=np.matmul(MAT_A,MAT_B)
print(MAT_AB1)
print(MAT_AB2)

 

 

終わりに

というわけで今回はpython上でnumpyというモジュールを使い、指定した行列の積を算出する方法についてご紹介しました。

 

冒頭にも述べたように、pythonはAI開発にも用いられている、最近人気のプログラミング言語です。

少しずつでもpythonスキルを高め、社内での地位を高めていきましょう。

 

このように私のブログでは様々なプログラミングスキルを紹介しています。

・もっと革新的なことをやりたい。

・プログラミングについてもっと詳しくなりたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

 ↓ 応援ボタン

にほんブログ村 IT技術ブログへ
にほんブログ村

 

それではまた!


 オススメ記事

www.higashisalary.com

www.higashisalary.com