.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

多次元配列における数値計算を効率的に行うことをサポートする数学関数ライブラリ

準備

インストール

> pip install numpy

インポート

>>>import numpy as np

ファースト・ステップ

NumPyの配列

1次元配列はベクトルとも言う。

生成

確認

>>>a=np.array([1.0,2.0,3.0])

算術計算

統計計算

標準正規分布

>>>x=np.random.randn(10)

NumPyのN次配列

行列

行列とは?

    列↓
  ┌      ┐
行│○  ○│
→│      │
  │○  ○│
  └      ┘

テンソル

テンソルとは?

生成

確認

算術計算

統計計算

要素へのアクセス

インデックス

抽出

セカンド・ステップ

ベクトル編集

置換

行列編集

置換

行追加

列追加

行削除

スライシング

列の削除

スライシング

要素の追加

stackで新規次元を追加してスタックする。

配列・行列変換

N次配列の1次配列化

ベクトルの2次配列化

(機械学習ライブラリ入力用)

ベクトル2次配列の1次配列化

(機械学習ライブラリ入力用)

サード・ステップ

型の変換

LIST ⇔ NP型変換

NP ⇔ DF型変換

行列の変換

転置行列

>>> a=np.array([[51, 55], [14, 19], [0, 4]])
>>> print(a)
[[51 55]
 [14 19]
 [ 0  4]]

次元の入れ替え

行(0)と列(1)が入れ替わる。
転置と同じだが、2次元以上のn次元行列にも適用可能。

>>> a=np.array([[51, 55], [14, 19], [0, 4]])
>>> print(a)
>>> a=a.transpose([1, 0])
>>> print(a)

reshape

>>>a=np.arange(0, 12)

One-Hotエンコーディング

>>> a=np.array([[0,1,2,3,4,5,6,7,8,9]])
>>> print(a)
[[0 1 2 3 4 5 6 7 8 9]]

エンコーディング

デコーディング

print((b.argmax(axis=1) == a).all())

4thステップ

ベクトルの積算(ドット積 = 内積)

>>>a=np.array([1,2,3,4])
>>>b=np.array([10,20,30,40])

データの生成

ベクトルを行列化する。

>>> a=a.reshape(1, -1)
>>> b=b.reshape(1, -1).T # 転置行列に

計算方法

交換法則が成立

行列では、交換法則の不成立になるが、
ベクトルの場合は成立する(ただし転置が必要)。

>>>a@b
>>>b.T@a.T
>>>np.dot(a,b)
>>>np.dot(b.T,a.T)

行列の積算(ドット積 ≠ 内積)

A行列 * B行列 =C行列

2行2列の場合

┌      ┐┌      ┐   ┌                    ┐
│a1  b1││a2  b2│   │a1a2+b1c2  a1b2+b1d2│
│      ││      │ = │                    │
│c1  d1││c2  d2│   │c1a2+d1c2  c1b2+d1d2│
└      ┘└      ┘   └                    ┘
  A行列    B行列              C行列
  2行2列    2行2列              2行2列

x行y列の場合

計算後のC行列は、A行列の行数 * B行列の列数の行列になる。

┌     ┐┌  ┐   ┌     ┐┌    ┐  ┌         ┐
│a1 b1││a2│   │a1 b1││a2 0│  │a1a2+b1b2│
│     ││  │ = │     ││    │ =│         │
│c1 d1││b2│   │c1 d1││b2 0│  │c1a2+d1b2│ 
└     ┘└  ┘   └     ┘└    ┘  └         ┘ 
  A行列   B行列                       C行列
  2行2列   2行1列                       2行1列
┌      ┐┌              ┐   ┌                                          ┐
│a1  b1││a2  b2  c2  d2│   │a1a2+b1e2  a1b2+b1f2  a1c2+b1g2  a1d2+b1h2│
│      ││              │   │                                          │
│c1  d1││e2  f2  g2  h2│ = │c1a2+d1e2  c1b2+d1f2  c1c2+d1g2  c1d2+d1h2│
│      │└              ┘   │                                          │
│e1  f1│                     │e1a2+f1e2  e1b2+f1f2  e1c2+f1g2  e1d2+f1h2│
└      ┘                     └                                          ┘
  A行列        B行列                             C行列
  3行2列        2行4列                             3行4列

計算方法

要素ごとの掛け算でないことに注意

信号処理

...

参考


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS