Python 無料で独習 021 外部ライブラリ(NumPy)  

Python
この記事は約5分で読めます。

外部ライブラリ NumPy 

以前、標準ライブラリについて勉強しましたが、
今回は外部ライブラリです。

NumPy

その外部ライブラリの中でも
数値計算を行う際によく用いられるライブラリ
NumPyについて勉強します。

線形代数、ベクトル、行列などの計算が得意らしいです。
今西先生はサラッとゆってくれますが、
どれもこれも身に覚えのない計算です(笑)

ただ、AIや機械学習のプログラムを書く際にも
必要となるライブラリらしいので気合を入れて講義を見ます。

標準ライブラリとちがい、外部ライブラリは使用する際
予めインストールする必要があるらしいです。

ただ、このGoogle Colabo の中には
NumPy    Pandas  Matplotlib といったライブラリは
すでにインストールされているらしいので
標準ライブラリと同様にimport で使用が可能らしいです。

import numpy as np
x = np.array([1,2,3])
x

array([1, 2, 3])

x.shape
(3,)

x.ndim
1

numpyをインポートするときは、
これは慣習らしいのですが、
import numpy as np
numpy をインストールします、npとして
という意味になると思いますので、
インポートしたnumpy を今後npとして呼び出します
みたいな意味なんだと思います。
で、numpy の機能の中でarray というのがあってこれが
ベクトルや行列を表現できるらしいです。

今の段階では数学的によくわからなくなってます(笑)

次に
x.shape
とすると行列の中身をみることができます。
(3,)
と出力されますので、これの意味は
縦に3行 横に0列という意味らしいです。

次に

x.ndim
と入力されてますが、これは次元数を出力してくれます。
1
と返ってきてますので
縦一列の一次元ということらしいです。

次は二次元です。

y = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9],          
])

y.shape
(3, 3)

y.ndim
2

y = np.array([
     [1,2,3],
     [4,5,6],
     [7,8,9],
])
[ ]がやたら多くてわかりにくいのですが、
こうやって記述すると二次元のデータを作成できます。
y.shape
で確認すると
(3, 3)
と出力されるので縦3行 横3列のデータが
できたことがわかります。

y.ndim
と実行すると2と出力されますので
2次元データであることも確認できます。

np.zeros((2,2))

array([[0., 0.],
       [0., 0.]])

逆にnp.zeros((2,2))
と記述するとzerosで全ての要素が0の行列を作ることができます。

np.zeros((10,10))とすると10×10の行列をつくることができます。
np.zeros((10,10))
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])

他にもいろいろな機能があって、以下のようになります。

y
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

#平均をとる
y.mean()
5

#行ごとの平均をとる
y.mean(axis=1)
array([2., 5., 8.])

#分散(データのバラツキ)
y.var()
6.666666666666667

#標準偏差
y.std()
2.581988897471611

#最大値
y.max()
9

次に新しい行列を定義します。

x = np.array([
    [2,3],
    [1,5],
    [3,1],          
])
x
array([[2, 3],
            [1, 5],
            [3, 1]])

で、x.Tとすると転置をおこなうこともできます。
行と列が入れ替わる感じです。

x.T
array([[2, 1, 3],
       [3, 5, 1]])

さらに
dotで行列の積を計算することもできます。

np.dot(x,x.T)

array([[13, 17,  9],
       [17, 26,  8],
       [ 9,  8, 10]])

いろいろと機能があるnumpy。
Pythonのコード的にはそれほど難しくないとは思うのですが、
数学が難しい(笑)
行列積なんて生まれて初めて聞きました(笑)

今日の講義は今までで一番難しかったです。
今西先生ありがとうございました。

コメント

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