見出し画像

Python NumPyの基本

NumPyの使い方を忘れたときのメモ。

モジュール類のインポート

In [1]:

#モジュール
import numpy as np

#小数点第3位まで表示
%precision 3

# バージョン
print("実行環境")
!python -V
print('numpy ' + np.__version__)

# デフォルトだと70文字くらいで改行されてしまうので設定変更
np.set_printoptions(linewidth=10000)
実行環境
Python 3.8.5
numpy 1.19.2

配列生成の基本

基本の配列 array

In [2]:

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

Out[2]:

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

ステップ数を指定した配列 arange

In [3]:

np.arange(start=0, stop=10, step=2)

Out[3]:

array([0, 2, 4, 6, 8])

分割数を指定した配列 linspace

In [4]:

np.linspace(start=0, stop=100, num=8)

Out[4]:

array([  0.   ,  14.286,  28.571,  42.857,  57.143,  71.429,  85.714, 100.   ])

基本の多次元配列 array

In [5]:

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

Out[5]:

array([[[1, 2],
        [3, 4]],

       [[5, 6],
        [7, 8]]])

ステップ数を指定した多次元配列 mgrid

In [6]:

np.mgrid[0:10:2, 0:9:3] #{x=start:stop:step, y=start:stop:step, ...}

Out[6]:

array([[[0, 0, 0],
        [2, 2, 2],
        [4, 4, 4],
        [6, 6, 6],
        [8, 8, 8]],

       [[0, 3, 6],
        [0, 3, 6],
        [0, 3, 6],
        [0, 3, 6],
        [0, 3, 6]]])

すべての要素が0の配列 zeros

In [7]:

np.zeros(4)

Out[7]:

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

すべての要素が1の配列 ones

In [8]:

np.ones(7)

Out[8]:

array([1., 1., 1., 1., 1., 1., 1.])

乱数配列の生成

In [9]:

# 設定は必須ではないが、次回実行時も同じ乱数を生成するための設定  
np.random.seed(0)

一様分布 random.rand

In [10]:

np.random.rand(10) # 0.0以上、1.0未満の乱数

Out[10]:

array([0.549, 0.715, 0.603, 0.545, 0.424, 0.646, 0.438, 0.892, 0.964, 0.383])

一様分布 多次元 rnadom.rand

In [11]:

np.random.rand(2,3,4)

Out[11]:

array([[[0.792, 0.529, 0.568, 0.926],
        [0.071, 0.087, 0.02 , 0.833],
        [0.778, 0.87 , 0.979, 0.799]],

       [[0.461, 0.781, 0.118, 0.64 ],
        [0.143, 0.945, 0.522, 0.415],
        [0.265, 0.774, 0.456, 0.568]]])

範囲を指定した一様分布の乱数 random.randint

In [12]:

np.random.randint(low=0, high=10, size=10)

Out[12]:

array([0, 4, 5, 5, 6, 8, 4, 1, 4, 9])

正規分布 random.randn

In [13]:

np.random.randn(10) # 平均0, 標準偏差1

Out[13]:

array([ 2.162, -0.957,  0.067,  0.206, -0.457, -1.06 ,  0.615,  1.43 , -0.212, -0.08 ])

平均、標準偏差を指定した正規分布

In [14]:

np.random.normal(loc=0.0, scale=1.0, size=10) #loc=平均、scale=標準偏差

Out[14]:

array([ 0.405,  0.119,  1.254,  1.419, -0.744, -2.517, -1.507,  1.149, -1.194,  1.141])

データの型、情報の確認

In [15]:

# 変数設定
data = np.array([0, 1, 2, 3, 4])

次元数

In [16]:

data.ndim

Out[16]:

1

要素数

In [17]:

data.size

Out[17]:

5

データ型

In [18]:

data.dtype

Out[18]:

dtype('int32')

numpy配列の計算

足し算

In [19]:

data + 1

Out[19]:

array([1, 2, 3, 4, 5])

引き算

In [20]:

data - 1

Out[20]:

array([-1,  0,  1,  2,  3])

掛け算

In [21]:

data * 2

Out[21]:

array([0, 2, 4, 6, 8])

累乗

In [22]:

data ** 2

Out[22]:

array([ 0,  1,  4,  9, 16], dtype=int32)

割り算

In [23]:

data / 2

Out[23]:

array([0. , 0.5, 1. , 1.5, 2. ])

余り

In [24]:

data % 2

Out[24]:

array([0, 1, 0, 1, 0], dtype=int32)

配列同士の計算

In [25]:

data + data

Out[25]:

array([0, 2, 4, 6, 8])

この記事が気に入ったらサポートをしてみませんか?