プログラム未経験者がデータ分析に使う「Numpy」を勉強してみた

blue click pen near white document papers on top of brown wooden table Python
Photo by PhotoMIX Company on Pexels.com

現在勉強中のPythonによるデータ分析の教科書の中にある、Numpyの使い方を自分の備忘録とNumpy勉強中の人の参考になればと書いてます。

内容は順次追加していく予定です。

環境

  • Windows10
  • Python 3.8.1
  • numpy 1.19.4
  • jupyter 1.0.0
  • jupyter-client 6.1.7
  • jupyter-console 6.2.0
  • jupyter-core 4.7.0
  • jupyterlab-pygments 0.1.2

事前準備

Numpyを利用するときは初めにnumpyモジュールをインポートしてください。

モジュール:import numpy as np

各種設定

実行した結果はすべてJupyter Notebookの出力結果を載せています。

1次元配列を作る

1次元配列を作る場合は「array」関数を使います。

使い方

np.array([任意の数字])

a = np.array([1, 2, 3])
結果
array([1, 2, 3])

配列ができましたね。

2次元配列を作る

2次元配列を作る場合も同様に「array」関数を使います。

使い方

np.array([[任意の数字(行)], [任意の数字(列)]])

a = np.array([[1, 2, 3], [4, 5, 6]])
a
結果
array([[1, 2, 3],
       [4, 5, 6]])

2次元配列ができました。

数列を返す(arange)

連続した数字を作成する場合は「arange(任意の数字)」を使います。

使い方

np.arange(作成したい個数)

np.arange(10)
結果
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

0から9までの配列ができましたね。

単位行列を作る(eye)

単位行列とは、左上から右下までが「1」、それ以外が「0」の行列のことです。単位行列を作成する場合は「eye」を使います。

使い方

np.eye(作成したい数)

np.eye(5)
結果
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])

5行5列の単位行列ができました。

指定した数値で配列を作る

指定した数値で配列を作る場合は「full」を使います。

使い方

np.full(作成する数, 作成したい数値)

np.full(3, np.e)

※2次元配列を作成する場合は、「np.full((2,3), np.e)」のように配列で指定します。

結果
array([2.71828183, 2.71828183, 2.71828183])

※2次元配列指定
array([[2.71828183, 2.71828183, 2.71828183],
       [2.71828183, 2.71828183, 2.71828183]])

ネイピア数が3つ作られました。
また2次元配列も2行3列で作られてます。

転置する

2次元配列の行と列を入れ替えることを転置といいます。

転置をする場合は「T」を使います。

使い方

転置したい変数.T

a = np.array([[1, 2, 3], [4, 5, 6]]) 
a.T
結果
array([[1, 4],
       [2, 5],
       [3, 6]])

転置され、行と列が入れ替わりましたね。

次元数を減らす

2次元を1次元に減らす場合は「ravel」メソッドを使います。

使い方

次元を減らしたい変数.ravel()

a = np.array([[1, 2, 3], [4, 5, 6]])
a2 = a.ravel()
結果
array([1, 2, 3, 4, 5, 6])

2次元配列から1次元配列になりました。

指定した範囲内で均等に割りデータを作る

指定した範囲内で均等に割りデータを作る場合は「linspace」関数を使います。

使い方

np.linspace(開始の数, 終了の数字, 分ける個数)

np.linspace(0, 1, 5)
結果
array([0.  , 0.25, 0.5 , 0.75, 1.  ])

0から1までの数字が5分割されてます。

連結する

配列をの連結をする場合は「concatenate」関数や「hstack」関数を使います。

使い方

np.concatenate([結合したい変数1, 結合したい変数2])
np.hstack([結合したい変数1, 結合したい変数2])

a1 = np.array([1, 2, 3])
a2 = np.array([3, 4, 5])
np.concatenate([a1, a2])
np.hstack([a1, a2])
結果
array([1, 2, 3, 3, 4, 5])

a1とa2の配列が結合されましたね。

ブロードキャストを使う

ブロードキャストとは、配列の中のデータに直接演算ができる機能です。ブロードキャストと聞くとネットワークをやっている人は別のことを思い浮かべますね(笑)

使い方

特別な関数などはなく、通常通りに変数の計算をするだけです。

a = np.array([0, 9, 99, 999])
a = a + 1
結果
array([   1,   10,  100, 1000])

すべての配列に「+1」されました。

ドット積を使う

ドット積とは、2つのベクトルに対して演算を行うベクトルの内積を行う機能です。計算式は次のようになります。

  • 計算式
    a[a1, a2] * b[b1, b2] = a1*b1 + a2*b2

例えば、a=[1, 2]、b=[3, 4]の配列があったとします。
これらのドット積を計算すると以下のようになります。

1*3 + 2*4 = 11

使い方

np.dot(配列1, 配列2)

もしくは、Python3.5以降では、@演算子が使えます。

配列1 @ 配列2

a = np.array([1, 2])
b = np.array([3, 4])
np.dot(a, b)
または
a @ b
結果
11

内積計算され、「11」になりました。

以上です。

これからも追加していきますので、定期的に見に来ていただければと思います。

参考にしている本

以上です。ありがとうございました。

コメント

タイトルとURLをコピーしました