外部ライブラリ 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列という意味らしいです。
次に
と入力されてますが、これは次元数を出力してくれます。
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))
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.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のコード的にはそれほど難しくないとは思うのですが、
数学が難しい(笑)
行列積なんて生まれて初めて聞きました(笑)
今日の講義は今までで一番難しかったです。
今西先生ありがとうございました。
コメント