前回は行列の入力、出力、逆行列の勉強しました。今回は題名の通り、行列の和と積の計算をします。和の計算は簡単ですが、積の計算は少し難しいと思います。行列の和の計算では早速サンプルコードを見てみましょう。#include <stdio.h \end{bmatrix}-\begin{bmatrix} \end{pmatrix}$$, $$③ 2×4行列\begin{pmatrix} Pythonの画像処理ライブラリpillowの使い方をわかりやすく解説! var googletag = googletag || {}; -1 & 3 \end{bmatrix}$$, 行列の引き算も基本的に普通の引き算です。が、AーBを計算するのではなく、A +(ーB)という考え方で計算します。(理由は追って解説していきます), $$(例)\begin{bmatrix} 2 & 1 \end{pmatrix}$$, $$行列B=\begin{pmatrix} 行列の足し算・引き算の注意事項. googletag.defineSlot('/21812778492/blog_300x250_common_ctc02_adsence', [300, 250], 'div-gpt-ad-1566564559478-0').addService(googletag.pubads()); 1 & 2 JSciencer. \end{pmatrix}=\begin{bmatrix} googletag.defineSlot('/21812778492/blog_300x250_common_sidemiddle02_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565198822157-0').addService(googletag.pubads()); 4 & 5 \\ \end{pmatrix}\begin{pmatrix} 1 & 0 & 0 & 11 & -12 & 9 \\ a_{m,1} & \ldots & a_{m,n} 1 & 2 \\ 3& 5 2 & 2 1 & 2 行列計算をしてみよう! それでは行列の計算方法について詳しく見ていきましょう! 行列の足し算、引き算をやってみよう! 行列の足し算、引き算は、通常の計算方法と変わりません。 行列の 各要素を足したり、引いた結果 を求めることができます。 4 & 3 1× 3 & 2× 3 \\ 2 & -5 \\ 2・ 4+\left( -5\right) ・ 2 & 2・ 5+\left( -5\right) ・ 1 \\ d & -b \\ 3 & 4 行列の掛け算の定義 定義を述べるより実例をいくつか出して計算方法を体に覚えさせた方が早く身につきます。以下にいくつか行列の掛け算の例をあげていきます。 1行1列の場合 行列の掛け算を定義します。まず、一行だけの行列と一列だけの行列の積を googletag.defineSlot('/21812778492/blog_300x250_common_fixed01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565194485392-0').addService(googletag.pubads()); 2 & 4 \end{pmatrix}\begin{pmatrix} 1・ \left( -2\right) +2・ 2 & 1・ 5+2・ \left( -2\right) 1 & 4 \\ -8 & 9 & -7 \\ -c & a googletag.defineSlot('/21812778492/blog_300x250_common_sidemiddle01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565198726712-0').addService(googletag.pubads()); \end{bmatrix}$$, $$よって、A^{-1}=\begin{bmatrix} 1 & 2 & 5 \\ 3 & 6 \\ 3 & 5 \\ \end{pmatrix}$$, $$=\begin{pmatrix} -1× 2 & -1× 2 googletag.pubads().enableSingleRequest(); そして行列の足し算/ ... では、その逆行列は常に求まるのでしょうか?また、どのようにして逆行列を計算するのかここから解説していきます。 逆行列は存在しない事もある. \end{bmatrix}$$, $$(左辺)=\begin{bmatrix} 1 & 1 \end{bmatrix}$$, $$3× \begin{bmatrix} 1 & 9 & 9 & 3 \\ -1・ 4+3・ 2 & \left( -1\right) ・ 5+3・ 1 \end{bmatrix}は、$$, $$\begin{bmatrix} 1 \\ 機械学習に必須!Pythonで高速に行列計算ができるNumPyに入門! 著者:安井 真人(やすい まさと)@yasui_masatoさんをフォロー !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)? 2 & 1 2× 3 & 2× 3 \\ \end{bmatrix}+\begin{bmatrix} 1 & -1 & 1 1 & 0 & 2 \\ 著者:安井 真人(やすい まさと)@yasui_masatoさんをフォロー !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)? \vdots & & \vdots \\ \end{pmatrix}+\begin{pmatrix} 2 & 2 & -4 2 & -2 \end{pmatrix}\begin{pmatrix} みてわかると思いますが、位置が同じ同士を足していくのが、行列の和の計算になりますので、必ず行列のサイズを同じにしてください。今回は2×3の行列なので、全ての行列を2×3行列にして計算をしてください。, 今までは2重ループのfor文でしたが、積の計算は3重ループとなります。複雑ですね。, サンプルコードを見ても難しいと思うので、処理の流れを写真を見ながら、考えていきましょう。, まず、左方の行列の列と右方の行列の行のサイズを同じにしないと計算できないので注意が必要です。, 分かりにくかったと思うので実際に求めてみました。どうでしょうか。これでだいぶ流れの方は掴めたかなと思うのであとは自分で考えてプログラムを作ってみるといいかもしれません。根気強くいきましょう。今日は以上で終了となります。ありがとうございました。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。. googletag.defineSlot('/21812778492/blog_300x250_common_sidetop01_adsense', [[300, 250], [336, 280]], 'div-gpt-ad-1565330658303-0').addService(googletag.pubads()); -1 & -1 & 3 \end{pmatrix}$$(x、y), $$3次元ベクトルは、3行1列\begin{pmatrix} 1 & 1 \end{bmatrix}+\begin{bmatrix} 1 & 2 \\ \end{pmatrix}=\left( a_{i,j}\right)$$, ここから、行列どうしのたし算・引き算・スカラー倍する手順について紹介します。なお、後述しますが、行列どうしのかけ算については「行列のかけ算の手順をイラストで解説」の記事で、行列の『わり算』に当たる”逆行列”は、「逆行列の求め方2種類と逆行列をかける意味」の記事でそれぞれ解説しています。, $$\begin{pmatrix} 高校数学/物理/化学と線形代数をメインに解説!いつ・どこでもわかりやすい、差が付く記事が読めます!社会人の方の学び直し(リカレント教育)にも最適です。, プロ講師(数学/物理/化学/英語/社会)兼個別指導塾YES主宰/当サイト「スマホで学ぶサイト、スマナビング!」を運営しています。/指導中、実際に生徒が苦手意識を持っている単元について解説記事を執筆。詳細は【運営元ページ】をご覧ください。, スマナビング!は、いつ・どこでも(独学でも)資格試験(電験三種、数検、統計検定・就活のためのSPI(非言語)etc,,,)対策や、テスト勉強対策が出来るサイトです。. \end{bmatrix}=\begin{bmatrix} 侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。, 「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。, インフラエンジニア→プログラマー。趣味は3歳の子供にPCの使い方、タイピングを教えること。業務ではPython, PHP, Javaなどやってます。, 【NumPy入門 np.ndarray.size】配列の要素数がわかるsizeとlenの違い, 複雑な計算処理や機械学習などでも使用されていてPythonを扱う上ではとても重要なもの, 【NumPy入門 np.zeros】0で初期化した配列を作るzeros関数の使い方. 3・ \left( -2\right) +5・ 2 & 3・ 5+5・ \left( -2\right) \\ googletag.defineSlot('/21812778492/blog_300x250_common_fixed01', [[300, 250], [336, 280]], 'div-gpt-ad-1559710191960-0').addService(googletag.pubads()); 0 & 1 & 8 & 0 & 1 & 1 「機械学習で行列ってどういう時に使うんだろう?」, Pythonで行列計算を行うと、基本的な計算から複雑なものまで簡単に行うことができます!, 行列とはその名前の通り、横(行)と縦(列)方向の並びのからなる以下のような2次元のデータです。, もし学生時代に行列計算が苦手だった方も、計算自体は単純なものですので、Pythonのプログラミングと一緒に行列計算もマスターしちゃいましょう!, 以下のように、Pythonのリストの要素としてさらにリストを追加すると行列(2次元配列)として作成することができます。, 行列1と行列2(転置)をfor文でループして計算することにより、行列の計算結果を取得しています!, 今度は、Pythonの学術計算ライブラリであるNumPyを使用して行列計算をしてみましょう!, NumPyはNumPy配列(ndarrayと呼ばれている)を使用し、少ないコード量で様々な数値計算が簡単に行えるようになっています。, またNumPyはとても高速であるため、大量のデータを扱う場合など、Pythonを使いこなすには必須のライブラリでもあります。, 先程と同様に行列の積を計算してみましょう! \end{pmatrix}$$, を計算すると、確かに単位行例Eになることから、逆行列であることが確かめられました。, ・次回は、今回までの知識を使って「一次変換」と言われる分野を初めから見ていきます。, 《NEW》逆行列の三番目の求め方である「余因子行列」を用いた方法についての記事を作成しました。→「余因子行列の作り方と逆行列の公式への応用」, >>「【随時更新】線形代数シリーズ:0から学べる記事総まとめ【保存版】」を読む<<, ・第六回:「対角化/対角行列の意味と手順をわかりやすく解説!行列のn乗への応用も」, 当サイト「スマナビング!」では読者の方のご意見や、記事のリクエストなどをもとに改善・記事の追加、更新を行なっています。, ・また、多くの方に利用して頂くため、にSNSでシェア・当サイト公式Twitterのフォローをして頂くと大変励みになります。, ・より良い記事作成と「スマホ一台でいつでも、どこでも、必要な人へ学びを提供する」為にぜひご協力お願い致します!. pbjs.que=pbjs.que||[]; \end{bmatrix}と確かに単位行列になっています。$$, $$EB=\begin{pmatrix} スマホで学ぶサイト、 スマナビング! All Rights Reserved. 更新日 : 2019年5月8日, リサイズされた10枚の画像が「save.npy」の1ファイルに保存されていますのでかなりポータブルになったと思います!, np.load()でファイルを読み込み、for文でリストの要素をループして1画像ずつ処理をしています!, 先程作成した10枚のリサイズされた画像がカレントディレクトリに作成されるかと思います!, NumPyでの行列の操作は、複雑な計算処理や機械学習などでも使用されていてPythonを扱う上ではとても重要なものとなりますので、しっかりとマスターしていきましょう!, 当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。 1 & 3 \\ その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。 それぞれarr1は2×2、arr2は2×4の行列であることがわかります。, NumPyのsizeについてより詳しく知りたい方は、こちらの記事でも紹介されています! \end{pmatrix}$$, ・最後に、3列目の1行・2行目の成分を0にするために、{(1行目)+11×(3行目)、と、(2行目)ー8×(3行目)を行います。}, $$\begin{pmatrix} ここでは、行列の和と定数倍について例をあげながら解説します。 行列の和 行列の和に関しては各成分ごとに足し算するだけです。 行列の定数倍 行列の定数倍はそれぞれの成分に定数をかけるだけです。 特に難しい点はないかと思います。 スマホで学ぶサイト、 スマナビング! All Rights Reserved. 更新日 : 2019年2月12日, 行列の転置(行と列を入れ替える)は、Tまたはtranspose()ですることができます!, arr1、arr2のそれぞれの要素同士で足し算、引き算が行われているのがわかったかと思います!, 行列の掛け算には、各要素同士を単純に掛けたものと、行列の積を求める場合と2パターンあります。, ・ 各要素の掛け算 ベクトルの際、和と定数倍を導入しました。行列においても和と定数倍を導入することができます。ここでは、行列の和と定数倍について例をあげながら解説します。. NumPyでは以下のように計算することができます!, 行列をリストで扱う方法と比べるとNumPyを使用した方法は、とても簡単に計算できることがわかって頂けたかと思います!, 次項以降では、このNumPyを使用した行列計算の方法について様々な計算を試してきましょう!, NumPyの計算についてより詳しく知りたい方はこちらの記事でも紹介していますので参考にしてみてください。 3 & 4 & -1 \\ 2 & 5 \\ \end{bmatrix}の時、2× 2 の行列Bを求めよ$$, $$\begin{bmatrix} 行列には定数倍だけでなく、行列どおしの掛け算もよく使用します。ここでは、この行列どおしの掛け算の計算方法について解説します。, 定義を述べるより実例をいくつか出して計算方法を体に覚えさせた方が早く身につきます。以下にいくつか行列の掛け算の例をあげていきます。, と定義します。ベクトルの内積と似てますね。掛け合わせる際に相手が必要なので、はじめの行列の列とあとの行列の行が同じである必要があります。, 左から右へ計算していき、順に下に下がって計算していきます。慣れていけばスムーズに計算できるので練習してみてください。. 4 & 3 \end{bmatrix}B$$, $$(右辺)=\begin{bmatrix} 1 & 3 \\ 2 & -5 \\ \end{pmatrix}$$, ①においての行は(1,2)や(3,4)のことをいい、列は(1,3)や(2,4)のことを指します。, (ベクトルの成分表示を思い出してみて下さい:「ベクトルの成分表示とは?その意味と足し算・引き算」), $$2次元ベクトルは、2行1列\begin{pmatrix} それぞれの行列を「*」を使って掛け算を行っています。 各行列の要素同士で掛け算が行われていることが実行結果からわかります!, ・ 行列の積 0 & 1 1 & 2 \end{pmatrix}+\begin{pmatrix} -1 & -1 & 3 \end{bmatrix}\begin{bmatrix} \end{pmatrix}$$, $$逆行列A^{-1}=\frac {1}{ad-bc}\begin{pmatrix} 0 & -1 & -7 & 1 & -2 & 0 \\ 2 & 5 \\ 2 & 5 \\ 1 & 2 & 5 & 0 & 1 & 0 \\ 3× 3 & 5× 3 3 & 4 更新日 : 2020年5月21日, 画像データを読み込んでNumPy配列として扱うことによって、NumPyの機能で様々な処理を行うことができるようになるのです!, またPythonのNumPyデータとして画像を保持できるため、プログラミングでの処理で大変扱いやすくなるのです!, それでは行列操作のまとめてとして、画像データをNumPy配列に変換してみましょう!, サンプルコードでは、画像を読み込んだ後に画像をリサイズし、NumPyの配列(3次元の配列)に変換しています。 1 & 2 & 5 & 0 & 1 & 0 \\ \end{pmatrix}$$, <ここからの内容>:逆行列の作り方その2:掃き出し法(ガウスの消去法)の利用(線形代数第8回・第9回で学ぶ知識を利用するので、必要に応じて以下のリンクからご覧ください。), 掃き出し法を用いて連立方程式を解いた第8回:「掃き出し法と連立方程式の解」と、第9回:「非正則行列に掃き出し法を用いて階段行列を作る」を利用して『逆行列を作る方法』を紹介します。. (adsbygoogle = window.adsbygoogle || []).push({}); Copyright 2015-2020 All rights reserved. -1 & -1 & 3 & 0 & 0 & 1 z \end{pmatrix}と求まります。$$, $$(左辺)=\begin{pmatrix} 2 & 2 \\ -2 & -2 \end{bmatrix}$$, $$=\begin{bmatrix} 2 & -2 行列乗算演算子では、以下の公式に従って 2 つの行列の積が求められます。 C ( i , j ) = ∑ k = 1 n A ( i , k ) B ( k , j ) . (adsbygoogle=window.adsbygoogle||[]).push({}); ここでは、上述した通り『掃き出し法』の要領で逆行列を求めますが、先ほどの逆行列の作り方(1)と何が違うのか、少し触れておきます。, 上の方法(1)で紹介した方法は、2×2サイズの行列のみにしか適用できませんでした。, が、掃き出し法を使用した今回の方法を使うと、正則であれば、3×3・4×4・・・とサイズが大きくなっても逆行列を求めることができます。, 手順は非常に単純なので、第8回・第9回の掃き出し法をマスターしていれば普通の計算を繰り返すだけで逆行列を作ることが可能です。, ここでは例として、$$A=\begin{pmatrix} 2 & 1 1 & 0 & -11 & 0 & -1 & -2 \\ \end{bmatrix}=\begin{bmatrix} \end{bmatrix}\begin{bmatrix} \end{bmatrix}B=\begin{bmatrix} JSciencer. 3 & 5 \end{bmatrix}$$, $$=\begin{bmatrix} googletag.defineSlot('/21812778492/blog_468x60_common_eyecatch02_adsence', [728, 90], 'div-gpt-ad-1567575393317-0').addService(googletag.pubads()); -1 & 3 4 & 5 \\ 2 & 1 0 & 2 & 2 & 6 注意!:行列同士の足し算・引き算は行と列の数が同じもの出ないと計算できません。 $$\begin{pmatrix} 1 & 3 \\ 2 & 4 \end{pmatrix}+\begin{pmatrix} 2 & 2 \\ 1 & 1 \end{pmatrix}$$ の様に、2行2列の行列と2行2列の行列は計算できますが、 【NumPy入門 np.ndarray.size】配列の要素数がわかるsizeとlenの違い 更新日 : 2020年3月3日, ここではNumPyを使用する上で必要となる基本的な使い方について確認しておきましょう!, 行列を扱うのに「行の要素がいくつあるのか」「列の要素がいくつあるのか」など、行列がどんな形をしているのか調べたい時がありますよね!, 行列の要素数を取得するには、以下のサンプルコードのようにshapeを使用します! 4 & 5 \\ 4 & 3 -8 & 9 & -7 \\ -1× 1 & -1× 2 \\ 2 & 3 & 3 & 1 & 0 & 0 \\ 0 & 1 & 8 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 & -1 & 1 \end{pmatrix}$$, $$ ② 3×3行列 \begin{pmatrix} \end{pmatrix}$$, 行列の足し算は、非常に簡単で、同じ成分を足していくだけです、実際に上の例で見てみましょう。, $$\begin{bmatrix} // fixed01のWORKSが不定期なため共通処理とする \end{pmatrix}$$, ここから、行基本操作を繰り返して、行列の左3列の部分がEになるように変形していきます。, ・まず1行目と2行目を入れ替えて、1列目の2行・3行の部分を0にします。{(2行目)ー2×(1行目)と、(2行目)+(3行目)を計算する)}, $$\begin{pmatrix} 1 & 2 \\ \end{pmatrix}の行列と言えます。$$, 2×2行列や、3×2行列などのうちは数が少ないので良いのですが、勉強を進めていくうちに、とても大きな数の行列を扱ったり、特定の「場所」の成分(=2行目3列目の数字などのことです)を書く必要が出てきます。, $$A=\begin{pmatrix} \end{pmatrix}$$, $$B=\begin{pmatrix} y \\ 0 & 1 & 0 & -8 & 9 & -7 \\ 6 & 6 \\ googletag.cmd.push(function() { このことを確認するため、2 つの行列の積を計算してみましょう。 11 & -12 & 9 \\ c & d 高校数学/物理/化学と線形代数をメインに解説!いつ・どこでもわかりやすい、差が付く記事が読めます!社会人の方の学び直し(リカレント教育)にも最適です。, プロ講師(数学/物理/化学/英語/社会)兼個別指導塾YES主宰/当サイト「スマホで学ぶサイト、スマナビング!」を運営しています。/指導中、実際に生徒が苦手意識を持っている単元について解説記事を執筆。詳細は【運営元ページ】をご覧ください。, スマナビング!は、いつ・どこでも(独学でも)資格試験(電験三種、数検、統計検定・就活のためのSPI(非言語)etc,,,)対策や、テスト勉強対策が出来るサイトです。. \end{bmatrix}を行列Aとして、その逆行列A^{-1}を求める。$$, $$A^{-1}=\frac {1}{3× 2-5× 1}\begin{bmatrix} }); 「Pythonの行列ってなんだろう?」 転置行列のよく用いられる性質 (線形性・積・逆行列・固有値・行列式・トレース・ランク・内積と転置の関係など)と公式・例をリスト形式でまとめました。各項目には分かりやすい証明が置かれています。よろしければご覧ください。 \end{pmatrix}$$, この、"1/ad-bc"の分母の部分である“ad-bc”には名前が付いており、「行列式」と呼ばれます。, 線形代数において非常に大切なものなので、詳細については別の記事で詳しく取り上げます。, <線形代数(8)「3×3の行列式を求める”サラスの公式”」の解説記事をアップしました>, また、逆行列が存在する正方行列(行数と列数が同じ行列詳しくは≫「行列同士の掛け算の順序」)のことを「正則行列」と言います。, 一方で、上記のように行列式ad-bcが0である=逆行列が存在しない正方行列のことは「特異行列」と呼ばれます。, それぞれ2×2の正方行列A、B、Cについて、AB=Cが成立しており、かつAとCの成分が分かっている時に、行列Bを求める方法を考えてみます。, 実数の場合は、再掲する以下の図2のように逆数を両辺にかける事で求めることができました。, $$\begin{bmatrix}