この記事では、numpyの基本的な使い方についてご紹介します。
目次
変数の宣言、値へのアクセス
numpy配列を定義するには、np.array(初期値リスト、型)のように宣言します。
型には、int,やfloatを指定することができます。
一度、宣言した後は、リストと同様に[0]のようにインデックスを指定してアクセス出来ます。
[:2]のように範囲指定することで、0,1番目の値を取得することも可能です。配列に特定の値が含まれているかどうかの判定には、「値 in 配列」のように書きます。
integerArray = np.array([1,2,3,4], int) print(integerArray[0]) print(integerArray[:2]) print(2 in integerArray) #1 #[1 2] #True
配列の合成、0,1で初期化、rangeを使った初期化
numpy配列の同士の合成には、np.concatenateを使用します。
全ての要素が0もしくは1の配列を宣言したい場合には、np.zerosもしくは、np.onesを使います。
0~9までの要素で初期化したい場合には、range(10)のように指定します。
# numpy配列の合成、0で初期化、1で初期化、1〜10の範囲で初期化 integerArray2 = np.array([5,6], int) print(np.concatenate((integerArray,integerArray2))) print(np.zeros(10)) print(np.ones(10, dtype=int)) floatArray = np.array([[1,2,3],[4,5,6]],float) print(floatArray) rangeArray = np.array(range(10), int) print(rangeArray) #[1 2 3 4 5 6] #[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] #[1 1 1 1 1 1 1 1 1 1] #[[1. 2. 3.] #[4. 5. 6.]] #[0 1 2 3 4 5 6 7 8 9]
次元数の変更
配列の次元を変更した場合には、reshapeやflattenを使用します。
1×10の配列をreshapeを使って、2×5の配列にしてみます。
元に戻すにはflattenを使って1次元にします。
rangeArray = rangeArray.reshape(5,2) print(rangeArray) rangeArray = rangeArray.flatten() print(rangeArray) #[[0 1] #[2 3] #[4 5] #[6 7] #[8 9]] #[0 1 2 3 4 5 6 7 8 9]
多次元配列の合成
多次元配列の合成も、同様にnp.concatenateを使用します。
axis=0を指定すると行の合成、axis=1で列の合成になります。
arr1 = np.array([[1,2,3],[4,5,6]],int) arr2 = np.array([[7,8,9],[10,11,12]],int) print(np.concatenate((arr1,arr2),axis=0)) print(np.concatenate((arr1,arr2),axis=1)) #[[ 1 2 3] # [ 4 5 6] # [ 7 8 9] # [10 11 12]] #[[ 1 2 3 7 8 9] # [ 4 5 6 10 11 12]]
要素ごとの演算
要素ごとに足し算、掛け算をしてみます。
1つ目の配列の平方根も求めてみます。
# 配列の演算、足し算、掛け算、平方根 print("array 1\n {}".format(arr1)) print("array 2\n {}".format(arr2)) print("array1 + array2\n {}".format(arr1 + arr2)) print("array1 * array2\n {}".format(arr1 * arr2)) print("Square root of Array 1\n {}".format(np.sqrt(arr1))) #array 1 # [[1 2 3] # [4 5 6]] #array 2 # [[ 7 8 9] # [10 11 12]] #array1 + array2 # [[ 8 10 12] # [14 16 18]] #array1 * array2 # [[ 7 16 27] # [40 55 72]] #Square root of Array 1 # [[1. 1.41421356 1.73205081] # [2. 2.23606798 2.44948974]]
今日はこんなところです。
おわり。