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

目次

概要

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

詳細

準備

インストール

> pip install numpy

インポート

>>>import numpy as np

関数

数列生成

統計関数

行列操作

行列演算

信号処理

ファースト・ステップ

NumPyの配列

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

生成

>>>x=np.array([1.0,2.0,3.0])
>>> x
array([1., 2., 3.])
>>>print(x)
[1. 2. 3.]
>>>type(x)
<class 'numpy.ndarray'>

確認

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

>>> np.ndim(x) # 配列の次元
1

>>> x.shape    # 次元の形状
(3,)

>>> x.shape[0] # 次元の要素数
3

算術計算

同じ数の要素を持つ2つのNumPy配列を算術計算で処理する。

>>>x=np.array([1.0,2.0,3.0])
>>>y=np.array([2.0,4.0,6.0])

統計計算

NumPyのN次配列

行列

行列とは?

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

テンソル

テンソルとは?

生成

>>> a=np.array([[1,2],[3,4],[5,6]])
>>> print(a)
[[1 2]
 [3 4]
 [5 6]]
>>> np.ndim(a) # 配列の次元
2
>>> a.shape    # 行列の形状
(3, 2)         # 行数・列数
>>> a.dtype    # 行列要素のデータ型
dtype('int32')

算術計算

要素へのアクセス

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

インデックス

抽出

置換

編集

ベクトル関連

行追加

列追加

行削除

スライシング

列の削除

スライシング

要素の追加

ブロード・キャスト

スカラ値や異なる形状の配列と計算を行う。

スカラ値

配列とスカラ値との計算では、スカラ値が配列形状に拡張され計算される。

異なる形状

行列の積算

セカンド・ステップ

行列の変換

転置行列

>>> 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)

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]]

行列の積算

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列

演算子、メソッド

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

ベクトルの積算(内積)

>>>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)

信号処理

...

参考


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