スライドショー

機械学習に必須!Pythonで高速に行列計算ができるNumPyに入門!

この記事ではNumPyの紹介を行います。

機械学習やAIプログラムでは、非常に膨大な計算を行います。

そんな計算を効率的に行うためのライブラリがNumPyです。

この記事では

  • NumPyとは
  • 四則演算
  • データの特徴を捉える値を計算

などの基本的な内容から

  • 内積と外積

などの応用的な内容まで解説していきます!

NumPyは機械学習プログラミングで非常に重要なライブラリです。

この記事でNumPyに入門しちゃいましょう!

NumPyとは

python_numpy

[引用:numpy.org]

高速に行列計算ができるNumPy

NumPyPythonの行列計算ライブラリです。

実はPythonは他のプログラミング言語と比べてあまり速く計算ができません

ではどうやってAIプログラミングなどの重い計算をやっているのかというと、実はこのNumPyに計算をしてもらっているんです。

NumPyはC/C++、Fortranなどの高速に動作する言語で実装されていて、Pythonから簡単に使うことができます。

このライブラリは現在の機械学習・ディープラーニングなどのAI技術のプログラムには必要不可欠なツールであり、AIプログラミングを行うために是非覚えておきたいツールです!

インストール方法

Anacondaを使ってPython環境を作ったならば、既にNumPyはインストールされています

ちなみに、Anaconda環境でNumPyを手動インストールする時は、

conda install numpy

他の方法でPython環境を作って、NumPyをインストールする時は、

pip install numpy

でインストールできます。

NumPyの使い方

numpy_10

このセクションでは、NumPyを使った簡単な行列演算にチャレンジしましょう!

まずは準備として、NumPyをimportします

NumPyは慣例としてnpというニックネームをつけますよ。

import numpy as np

a = np.arange(6)
a = a.reshape(2,3)
b = np.arange(6,12)
np.random.shuffle(b)
b = b.reshape(2,3)

このプログラムでは、aとbというサンプル行列を作ります。

★ヒント

np.arrange(x,y)
> xからy-1までの要素を持った整数(int)型のベクトルを作ります。

z.reshape(x,y)
> zをx,y行列に変形します。

np.random.shuffle(x)
> xをランダムに並び替えます。

この操作によってaとbは以下のような値を持ちます。

numpy_1

ではこれらを使って行列の計算をやってみましょう。

四則演算

演算子( + - * /など)を使った行列同士の計算は、要素同士の計算になります。

この解説でわかった人はOKです。次へ進んでください。

ストンとこなかった人は、謎の演算子★を使った例題、result=a★bを考えましょう。

この計算をしたとき、numpyは下のような動きをします。

numpy_2

要素同士の計算とはこういうことです。

わかりましたか?

わかったら次へ。ストンとこなかった人は下の例題を手で計算してみましょう!

加算(足し算)

result = a+b

# 結果
array([[ 6,  9, 11],
       [14, 11, 15]])

減算(引き算)

result = a-b

# 結果
array([[-6, -7, -7],
       [-8, -3, -5]])

乗算(掛け算)

result = a*b

# 結果
array([[ 0, 8, 18],
       [33, 28, 50]])

除算(割り算)

result = a/b

# 結果
array([[0. , 0.125 , 0.22222222],
       [0.27272727, 0.57142857, 0.5 ]])

データの特徴を捉える値

平均値、中央値、最大値、最小値を計算してみましょう。

まずはサンプルデータを作ります。

今回は標準正規分布 (平均0, 標準偏差1)から値を10個サンプリングしました。

c = np.random.randn(10)

# 結果
array([ 0.74574745, -0.25264616, 2.73971656, 0.01992425, 1.33860227,
        0.3727719 , 0.13732889, 0.47620023, 1.32571159, -0.57923272])

numpy_3

この配列を使って配列を使って計算していきましょう。

平均値

np.mean(c)

# 結果
0.6324124270974353

中央値

np.median(c)

# 結果
0.4244860647418945

最大値

np.max(c)

# 結果
2.7397165593902857

最小値

np.min(c)

# 結果
-0.5792327226017869

内積と外積

内積

内積(dot product)、機械学習でよく出てくる計算ですね。

ちょっとわからないぞ?って人は次の記事をチェック。

【数学】「内積」の意味をグラフィカルに理解すると色々見えてくる その1@kenmatsu4 --Qiita

イメージとしては下の感じ。

numpy_5

NumPyなら内積の計算も簡単!

result = np.dot(a, c[1])

# 結果
array([ 27, 111])

★ヒント

b[1] > bの0から数えて1番目の要素を取り出します。つまり[11, 7, 10]が取り出されます。

外積

外積(outer product)・・・というか直積も計算しましょう。

イメージとしては下の感じ。numpy_4百ます計算(掛け算)みたいな感じですね。

np.outer(a.reshape(6), b.reshape(6)[:4])

# 結果
array([[ 0,  0,  0,  0],
       [ 6,  8,  9, 11],
       [12, 16, 18, 22],
       [18, 24, 27, 33],
       [24, 32, 36, 44],
       [30, 40, 45, 55]])

あなたが学ぶべき言語はPythonで本当に大丈夫?

ここまでPythonのライブラリであるNumPyの使い方について解説してきましたが、この記事をご覧の方の中には、

このままでPythonを習得できるのだろうか..

と不安になっている人もいるのではないでしょうか?そんな方には、一度立ち止まって考えて欲しいことがあります。それは、そもそもあなたがPythonを学ぶ目的は何か?本当に学ぶべき言語はPythonで間違いないか?ということです。

Pythonを学ぶ目的や理由は明確ですか?

Pythonに限った話ではありませんが、プログラミング学習はエラーとの戦いが大半なので、学ぶ目的や理由が不明確だとモチベーションが下がってしまい、挫折してしまいやすいです。

なのでもしあなたが今、

  • なんとなくPythonが人気そうだから
  • Pythonは将来性がありそうだから

といったような、ぼんやりした理由でPythonを学んでいるとしたらそれは要注意。もっと言うと、そもそもあなたが学ぶべき最適な言語が他にあるという可能性も考えられます。

どのプログラミング言語を学ぶか?は、その先のエンジニア人生を左右すると言っても過言ではありません。もしあなたが現状の言語選定に少しでも不安があるなら、まずはプログラミング言語無料診断アプリを使ってみてください。

いくつかの簡単な質問に答えるだけで、あなたにぴったりの言語や学習プランを1分ほどで無料診断致します。

挫折せずに学びたいなら

また、学ぶべき言語はPythonで間違っていないけど、エラーとの戦いに消耗している方や、想像以上にPython学習に手こずっている人もいるかもしれませんね。

というのも、一般的にPythonは初心者でも学びやすい言語と言われていますが、そもそも機械学習という分野は、プログラミング以外にも専門的な知識や数学の知識も必要になってくるので、実は思っている以上に挫折しやすい言語でもあるのです。

なのでやはりつまずいた時に分からない部分を聞ける環境を作っておくと、挫折する事なく学習を続けられスキルを習得できる可能性がグッと上がります。

もしあなたが今Pythonの独学に少しでも不安を抱いていたり、思ったよりも進捗が得られていないのであれば、ぜひ弊社「侍エンジニア塾」をご利用ください。

弊社ではAI専門コースを用意しており、経験豊富な現役エンジニアがマンツーマンであなたの学習をサポートします。また、転職支援や独立・起業サポートもしているので、学習した先も安心ですよ。

もちろん、いきなり入会するのは不安な人も多いと思います。そこで、興味がある人はまず無料体験レッスンを利用してみてください。弊社随一のコンサルタントが、あなたの理想や目標をヒアリングした上で、あなたにぴったりの学習プランを提供させて頂きます。

無料体験は下記ボタンから1分ほどで予約できるので、ぜひお気軽にご利用ください。オンラインでの利用も可能となっています。

侍エンジニア塾
無料体験レッスンの予約はこちら

まとめ

この記事では、Numpyの簡単な使い方を紹介しました

NumPyはPythonで非常に重要なライブラリです。

本当に様々なツールで使われていて、これを覚えるだけで世界が広がります。

もっと深いNumPyの勉強がしたい!NumPyで機械学習を実装したい!という方には侍エンジニア塾のマン・ツー・マンレッスンがオススメです。

マン・ツー・マンレッスンでNumPy、機械学習の勉強を始めてみましょう。

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説