Python – 2-1.numpy –
2. ndarray
import numpy as np
初期化
1次元リストを、0で初期化
nary = np.zeros(5) ==> array([0., 0., 0., 0., 0.])
1次元リストを、1で初期化(np.ones)
nary = np.ones(5) ==> array([1., 1., 1., 1., 1.])
1次元リストを、同じ任意の値で初期化(np.full)
nary = np.full(5, 999) ==> array([999, 999, 999, 999, 999]) ※1つ目の引数が要素数。設定する値が2つ目
空の値で初期化(np.empty)
nary = np.empty(5) ==> array([0., 0., 0., 0., 0.]) ※結果はその時々によって異なる。値が不定なので、後続処理で値を指定することが確実な時に使用すること
連番で初期化(np.arange)
nary = np.arange(6) ==> array([0, 1, 2, 3, 4, 5]) ※"arrange"(整える)ではなく、"a"(Array)+"range()"なので注意
全て任意の値で初期化(np.array)
nary = np.array([[0,1,2], [4,6,8]]) ==> array([[0, 1, 2], [4, 6, 8]])
2次元配列はタプルで型指定。次元は行・列の順
nary1 = np.zeros((2,3)) ==> array([[0., 0., 0.], [0., 0., 0.]])
2次元リストを、任意の値で初期化
nary = np.full((2, 3), 999) ==> array([[999, 999, 999], [999, 999, 999]])
0で初期化(np.zeros_like)
既存のndarrayの型に合わせる
nary = np.zeros_like(nary1) ==> array([[0., 0., 0.], [0., 0., 0.]])
1で初期化(np.ones_like)
既存のndarrayの型に合わせる
nary = np.ones_like(nary1) ==> array([[1., 1., 1.], [1., 1., 1.]])
任意の値で初期化(np.full_like)
既存のndarrayの型に合わせる
nary = np.full_like(nary1, 999) ==> array([[999., 999., 999.], [999., 999., 999.]])
空の値で初期化(np.empty_like)
既存のndarrayの型に合わせる
nary = np.empty_like(nary1) ==> array([[0., 0., 0.], [0., 0., 0.]]) ※empty()と同じく、値が不定なので、後続処理で値を指定することが確実な時に使用すること
CSVファイルから読み込んで初期化(genfromtxt)
読込対象データ(CSV形式で保存しておく)
[sample.csv] idx,col1,col2,col3 0,1,a,512 1,2,b,128 2,3,c,256 3,4,999,4
全カラム/データ型読込(文字列も読み込むので、dtype付となる)
nary = np.genfromtxt('sample.csv', delimiter=',', encoding='utf-8', names=True, dtype=None) ⇒ array([(0, 1, 'a', 512), (1, 2, 'b', 128), (2, 3, 'c', 256), (3, 4, '999', 4)], dtype=[('idx', '<i4'), ('col1', '<i4'), ('col2', '<U3'), ('col3', '<i4')])
ヘッダ行をスキップして2次元で読込む。データ型(dtype)指定しないと文字列はNaNになる
nary = np.genfromtxt('sample.csv', delimiter=',', encoding='utf-8', skip_header=1) ⇒ array([[ 0., 1., nan, 512.], [ 1., 2., nan, 128.], [ 2., 3., nan, 256.], [ 3., 4., 999., 4.]])
1列目と4列目のカラムのみ読込む。
nary = np.genfromtxt('sample.csv', delimiter=',', encoding='utf-8', usecols=[0,3], names=True, dtype=None) ⇒ array([(0, 512), (1, 128), (2, 256), (3, 4)], dtype=[('idx', '<i4'), ('col3', '<i4')])
データ型、情報の取得
初期化 nary = np.ones((2,3))
配列情報
・配列の次元毎の要素数 nary.shape ==> (2, 3) ・データ型 nary.dtype ==> dtype('float64') ・配列の次元数 nary.ndim ==> 2 ・配列の全要素数 nary.size ==> 6
データ型の指定
int型を指定する場合
nary = np.ones((2,3), dtype=int) nary = np.ones((2,3), dtype='int') ==> array([[1, 1, 1], [1, 1, 1]]) ※intの場合は小数点の表示がない
object型(文字列等)を指定する場合
nary = np.ones((2,3), dtype=object) ==> array([[1, 1, 1], [1, 1, 1]], dtype=object)
float型(浮動小数点)を指定する場合
nary = np.ones((2,3), dtype=float) ==> array([[1., 1., 1.], [1., 1., 1.]])
データ型の変更(astype)
nary = nary.astype(np.int16) ==> array([[1, 1, 1], [1, 1, 1]], dtype=int16) nary = nary.astype(np.float) ==> array([[1., 1., 1.], [1., 1., 1.]]) ※floatはデフォルト値なので表示なし。
float型をunicode文字列に変換
nary = nary.astype(np.unicode) ==> array([['1.0', '1.0', '1.0'], array([['1.0', '1.0', '1.0'], ※足し算してみると・・・1.01になる nary[0,0] = nary[0,0] + '1' array([['1.01', '1.0', '1.0'], ['1.0', '1.0', '1.0']], dtype='<U32')
最近のコメント