宮咲ふわらのNumPy関数備忘録

# はじめに

ゲーム実況AI「宮咲ふわら」を作成するときに使ったNumPyの関数の備忘録です。


##環境

本記事内のコードは全て次のようにインポートした状態で動作しています。

```python
import numpy as np
```

ライブラリのバージョンは次のとおりです。

* Python3.6.2
* NumPy1.14.3

#配列の初期化

__full(shape, fill_value, dtype=None, order='C')__
任意の値で初期化された配列を取得するための関数。

__zeros/ones(shape, dtype=None, order='C')__
0/1で初期化された配列を取得するための関数。

```python
np.full([2, 3], 3)
# [[3 3 3]
#  [3 3 3]]
np.zeros([2, 3])
# [[0. 0. 0.]
#  [0. 0. 0.]]
``` 

__arange(start=None, stop=None, step=None, dtype=None)__
始点から終点まで公差stepの等差数列で初期化された配列を取得するための関数。
終点は含まれない。

__linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)__
始点から終点までをnum分割した等差数列で初期化された配列を取得するための関数。
endpoint : 終点を含むかどうか
retstep : 公差を表示するかどうか

```python
np.arange(1, 6)
# [1 2 3 4 5]
np.arange(1, 6, 2)
# [1 3 5]

np.linspace(1, 5, 3))
# [1. 3. 5.]
np.linspace(1, 5, 3, endpoint=False)
# [1.         2.33333333 3.66666667]
np.linspace(1, 10, 5, retstep=True)
# (array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ]), 2.25)
```
#最大/最小

__amax/amin(a, axis=None, out=None, keepdims=np._NoValue)__
配列の要素の最大値/最小値を取得するための関数。

__argmax/argmin(a, axis=None, out=None)__
配列の要素の最大値/最小値のインデックスを取得するための関数。

```python
a = np.array([0, 1, 2, 1, 3, 0])
np.max(a)
# 3
np.argmax(a)
# 4

b = np.array([[0, 1],
              [2, 1],
              [3, 0]])

np.amax(b, axis=0)
# [4 5]
np.amax(b, axis=1)
# [1 3 5]

np.argmax(b, axis=0)
# [2 0]
np.argmax(b, axis=1)
# [1 0 0]
``` 
#ソート

__sort(a, axis=-1, kind='quicksort', order=None)__
配列の要素を並び替えた配列を取得するための関数。

__argsort(a, axis=-1, kind='quicksort', order=None)__
配列の要素を並び替えた際のインデックスを取得するための関数。

```python

a = np.array([2, 5, 0, 1, 3, 4])

np.argsort(a)
# [2 3 0 4 5 1]
np.sort(a)
# [0 1 2 3 4 5]
``` 

#計算
__mean(a, axis=None, dtype=None, out=None, keepdims=np._NoValue)__
配列の要素の平均を取得するための関数。

__sum(a, axis=None, dtype=None, out=None, keepdims=np._NoValue)__
配列の要素の合計を取得するための関数。

```python
a = np.array([[0, 1, 2],
              [3, 4, 5]])

np.mean(a)
# 2.5
np.mean(a, axis=0)
# [1.5 2.5 3.5]
np.mean(a, axis=1)
# [1. 4.]
``` 

__abs(x, *args, **kwargs)__
xの絶対値を取得するための関数。

```python
np.abs(-5)
# 5
np.abs([1, -1, 2, -2])
# [1 1 2 2]
``` 

__exp(x, *args, **kwargs)__
eのx乗を取得するための関数。

```python
np.exp(1)
# 2.718281828459045
np.exp([1,2])
# [2.71828183 7.3890561]
``` 

__sqrt(x, *args, **kwargs)__
xの平方根を取得するための関数。

```python
np.sqrt(2)
# 1.4142135623730951
np.sqrt([3, 4])
# [1.73205081 2.        ]
``` 

__sin/cos/tan(x, *args, **kwargs)__
三角関数を取得する関数。
他にarcsin()等も存在する。

```python
np.sin(0)
# 0.0
np.sin(np.pi)
# 1.2246467991473532e-16
np.sin([0, np.pi / 2])
# [0. 1.]
``` 

__clip(a, a_min, a_max, out=None)__
配列の要素を指定した範囲に収めた配列を取得するための関数。
要素ごとに最大値/最小値を指定することもできる。

```python
a = np.array([0, 1, 2, 3, 4, 5])
np.clip(a, 1, 4)
# [1 1 2 3 4 4]
np.clip(a, [5, 0, 5, 0, 5, 5], 5)
# [5 1 5 3 5 5]
``` 

#配列の変形

___reshape(a, newshape, order='C')___
配列の形状を変更した配列を取得するための関数。

```python
a = np.array([[0, 1, 2],
              [3, 4, 5]])

np.reshape(a, (3, 2))
# [[0 1]
#  [2 3]
#  [4 5]]
``` 

__delete(arr, obj, axis=None)__
配列から指定した要素を削除した配列を取得するための関数。

```python
 a = np.array([[0, 1, 2, 3],
               [4, 5, 6, 7],
               [8, 9,10,11]])

np.delete(a, 1, axis=0)
# [[ 0  1  2  3]
#  [ 8  9 10 11]]
np.delete(a, 1, axis=1)
# [[ 0  2  3]
#  [ 4  6  7]
#  [ 8 10 11]]
```

__concatenate(a_tuple, axis=0, out=None)__
配列同士を結合した配列を取得するための関数。

```python
a = np.array([[0, 1, 2],
              [3, 4, 5]])

b = np.array([[6, 7, 8],
              [9,10,11]])

np.concatenate((a, b), axis=0)
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]]
np.concatenate((a, b), axis=1)
# [[ 0  1  2  6  7  8]
#  [ 3  4  5  9 10 11]]
``` 


__tile(A, reps)__
配列をタイル状に並べた配列を取得するための関数。

```python
a = [0, 1]

np.tile(a, 2)
# [0 1 0 1]
np.tile(a, (2, 3))
# [[0 1 0 1 0 1]
#  [0 1 0 1 0 1]]
``` 

__meshgrid(*xi, **kwargs)__
配列同士を格子状に配置したときの軸ごとの配列を取得するための関数。

```python
a = [1, 3, 5]
b = [2, 4]
    
x, y = np.meshgrid(a, b)
# x
# [[1 3 5]
#  [1 3 5]]
# y
# [[2 2 2]
#  [4 4 4]]
``` 

#参考
[DeepAge - あなたのデータサイエンス力を飛躍的に向上させるNumPy徹底入門](https://deepage.net/features/numpy/)
[SciPy.org - Numpy and Scipy Documentation](https://docs.scipy.org/doc/)