numpyを使ってみます。
import numpy as np
np.array
配列を作ります。
sample_array = np.array([1,2,3,4,5])
sample_array
shapeに関して
sample_array.shape # (5,)
sample_array.reshape(-1,1).shape # (5, 1)
reshapeのエラーメッセージにはだいたいこれで対応。
文字列と数字の格納
np.array([1,2,"A"])
# array(['1', '2', 'A'], dtype='<U21')
数値型と文字列型を同時に入れると、全て文字列として扱われる。
np.zeros()
0の連続する配列を作ります。初期化配列に使ったりする。
np.zeros(10)
# array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
# 2行3列を0で埋めておく
np.zeros([2,3])
# 1もできる
np.ones(5)
# array([1., 1., 1., 1., 1.])
演算
リストで計算するのと比べると、便利な演算機能です。
sample_array + 2
# array([3, 4, 5, 6, 7])
リストと比較
sample_list = [1,2,3,4,5]
sample_list + 2 # エラー
sample_list = [1,2,3,4,5]
sample_list + [2,2,2,2,2]
# [3, 4, 5, 6, 7, 2, 2, 2, 2, 2]
sample_list = [1,2,3,4,5]
for i in range(len(sample_list)):
sample_list[i] = sample_list[i] + 2
print(sample_list)
統計量
# sum
sample_array.sum()
np.sum(sample_array)
# mean
sample_array.mean()
np.mean(sample_array)
# var
sample_array.var()
np.var(sample_array)
# std
sample_array.std()
np.std(sample_array)
二次元配列
sample_array_2 = np.array(
[[1,2,3,4,5],
[6,7,8,9,10]])
sample_array_2
# array([[ 1, 2, 3, 4, 5],
# [ 6, 7, 8, 9, 10]])
sample_array_2.shape # (2, 5)
np.arange
数列の作成
# 初項1、公差1の等差数列を6にあたるまで作る(6は含まず)
np.arange(start = 1, stop = 6, step = 1)
# array([1, 2, 3, 4, 5])
np.arange(start=0.1, stop=0.8, step=0.2)
# array([0.1, 0.3, 0.5, 0.7])
np.linspace
数列の作成
# -2から2までの等差数列を連続的に作る
np.linspace(-2,2)
# plotで直線・曲線を描く際にx軸でたどる範囲に指定するような使い方もされる
# 0から10の区間に数値を等間隔で11個配置した数列
np.linspace(0, 10, 11)
# array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
np.tile
同じ値を複数格納
np.tile("A",5) # array(['A', 'A', 'A', 'A', 'A'], dtype='<U1')
np.tile(0,4) # array([0, 0, 0, 0])
np.zeros(4) # 同じ
np.random.choice
sample_array = np.array([1,2,3,4,5])
# 3つの非復元抽出
np.random.choice(sample_array, size=3, replace = False)
# 3つの復元抽出
np.random.choice(sample_array, size=3, replace = True)
np.random.seed()
# randomの出力を固定する
np.random.seed(1)
np.random.choice(sample_array, size=3, replace = False)
行列の計算もとても便利なので、そのうち追記します。