Help us understand the problem. What is going on with this article?

なぜなに? Deep Learning   科学計算ライブラリ Numpy 編

はじめに

これから、機械学習で使われる科学計算ライブラリを数記事に渡って説明していきます。
今回はNumpy編です。
全体ではなく機械学習で使われる機能を中心に紹介していきます。

また、Jupyter Notebookでコードを書いてくので、
コマンドプロンプトと動作が異なることには注意してください。

目次

  • Version確認
  • Numpy 基礎編
  • 最後に
  • 参考文献

Version確認

version
import numpy as np
np.__version__
#'1.16.4'

Numpy 基礎編

Numpyは多次元配列データを扱うライブラリです。
多重配列や行列を扱う際は、大変便利です。
行列の計算を理解していると、すんなり入ってきます。
(僕は行列が未熟だったので、数学の教科書も見ながら学んでました。時節、紙で計算したりしてます。)

Numpyをインポート
import numpy as np

Numpyはよくnpというモジュール名に変換します。
(僕はそれ以外のモジュール名は見たことはありませんでした。)

配列の定義
a = np.array([1,2,3,4,5])
# []を忘れないで下さいね
出力
>>>a
array([1, 2, 3, 4, 5])
>>>print(a)
[1 2 3 4 5]
>>>type(a) #型の確認
numpy.ndarray
多重配列時
>>>b = np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>>b
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>>print(b)
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]

行・列を表示
>>>a.shape
(5,)
>>>b.shape
(2,5)
np.arangeで要素を自動作成
>>>np.arange(1,10,2)
array([1, 3, 5, 7, 9])
>>>np.arange(2,11,2)
array([ 2,  4,  6,  8, 10])
np.reshapeで行列を変換する
>>>d = np.arange(1,11,1)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>>d.shape #shapeで配列の形を表示
(10,)
>>>d.reshape(2,5) #2行×5列の行列
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>>d.reshape(5,2) #5行×2列の行列
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10]])
>>>d.reshape(10,1) # 10行×1列の行列
array([[ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10]])
np.arangeとreshapeでこんなこともできる
>>>np.arange(1,10).reshape((3,3))
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

算術計算

配列同士で計算もできます。
ただし、計算する配列は行と列の数を一致するようにしてください。

算術演算
>>>x = np.array([1.0,2.0,3.0])
>>>y = np.array([4.0,5.0,6.0])
>>>x+y
array([5., 7., 9.])
>>>x*y
array([ 4., 10., 18.])
>>>x-y
array([-3., -3., -3.])
>>>x/y
array([0.25, 0.4 , 0.5 ])

ブロードキャスト

配列の内部データに直接演算できます。
機械学習の中で内積は必ず出てきますので、仕組みを覚えときましょう。
内積A・Bでは、Aの列の数とBの行の数を合わせること

行列の積(内積,ドット積)
>>>z = np.array([1,2,3])
>>>z.shape
(3,)
>>>v =np.array([[2],[3],[4]])
>>>v.shape
(3, 1)
>>>np.dot(z,v)
array([20])
内積
>>>e = np.array([[1,2,3],[4,5,6]])
>>>e
array([[1, 2, 3],
       [4, 5, 6]])
>>>f =np.array([[3,3],[3,3],[3,3]])
>>>f
array([[3, 3],
       [3, 3],
       [3, 3]])
np.dot(e,f)
array([[18, 18],
       [45, 45]])

最後に

今回はNumpyの簡単な部分を書いていきました。
次は、行列を使ってニューラルネットワークの計算の仕組みを書いていきます。

参考文献

  • ゼロから作るDeep Learning
  • Pythonで動かして学ぶ! あたらしい 機械学習の教科書
  • Pythonによる あたらしいデータ分析の教科書
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした