こんにちは、えびかずきです。
今回はリストとNumPy配列(ndarray)の扱い方で時々混乱する時があるので、
自分用の備忘録として記事にまとめておくことにしました。
こんな人におすすめ:
・listとadarrayの使い方をド忘れした
・使い方をググったらここに辿り着いた
機械学習をやってると、listとかNumPy配列のndarrayを扱う機会が多いので、一度自分のための備忘録として使い方をまとめておきます。
開発環境
Python 3.7.3
NumPy 1.20.2
作成
listは[]、ndarrayはnp.array()で作成。
import numpy as np
# list(1次元)
make_list_1d = [0,1,2,3,4]
# [0, 1, 2, 3, 4]
# list(2次元)
make_list_2d = [[0,1,2,3,4],[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8]]
# [[0, 1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 7, 8]]
# ndarray(1次元)
make_array_1d = np.array([0,1,2,3,4])
# [0 1 2 3 4]
# ndarray(2次元)
make_array_2d = np.array([[0,1,2,3,4],[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8]])
# [[0 1 2 3 4]
# [1 2 3 4 5]
# [2 3 4 5 6]
# [3 4 5 6 7]
# [4 5 6 7 8]]
初期化
import numpy as np
# list(空)
empty_list = []
# list(ゼロで埋める)
zero_list = [0]*5
# [0,0,0,0,0]
# list(1で埋める)
one_list = [1]*5
# [1,1,1,1,1]
# ndarray(空)
empty_array = np.array([])
# ちなみに、
empty_array2 = np.empty(5, dtype = np.int8)
# だと未初期化の要素で配列をつくる(要素が0の保証は無いが処理が早い)
# [0 0 0 0 0]
# ndarray(ゼロで埋める)
zero_array = np.array([0]*5)
# [0 0 0 0 0]
# もしくは、
zero_array2 = np.zeros(5,dtype=np.int64) #デフォルトはnp.float64
# [0 0 0 0 0]
# ndarray(1で埋める)
one_array = np.array([1]*5)
# [1,1,1,1,1]
# もしくは、
one_array2 = np.ones(5,dtype=np.int64) #デフォルトはnp.float64
# [1,1,1,1,1]
# ちなみにnumpy.full()だとの値で埋められる
スライス
スライスはlistもndarrayも同じ。
import numpy as np
# list
a = [0,1,2,3,4]
a[2:]
# [2, 3, 4]
a[2:4]
# [2, 3]
a[2:-1]
# [2, 3]
# array
b = np.array([0,1,2,3,4])
b[2:]
# [2 3 4]
b[2:4]
# [2 3]
b[2:-1]
# [2 3]
整形
ndarrayはreshapeメソッドで整形できる。
import numpy as np
# array
c = np.array([0,1,2,3,4,5,6,7,8,9])
d = c.reshape(2,5)
# [[0 1 2 3 4]
# [5 6 7 8 9]]
e = c.reshape(-1,5) # これでも結果は同じ
# [5 6 7 8 9]]
まとめ
今回はlistとndarrayの使い方についてまとめました。
流石にこのくらいはググらなくても使えるようになっておきたいですが、たまにド忘れします。
まだまだ自分も修行が足りませんね。
コメントを書く