NumPyの使い方(1) 配列の生成
NumPyの使い方について。
NumPyとは
・NumPy: numerical pythonの略。科学技術計算の基盤となるパッケージ
・多次元配列オブジェクト ndaaryay(N-dimensional array)
・高速演算
・ファイルの読み書き
・線形代数、フーリエ変換、乱数
・C、C++、FORTRANのコートとpythonを結合、統合するツール
配列をメモリの連続領域に保持している。
ndarrayクラスは同じ型の要素だけを含む。
import numpy as np という形でインポートする。
ndarrayの基本属性
dtype: データの型
ndim: 次元数(ネストの深さ)
shape: (行数, 列数)のタプル
size: 全要素数
import numpy as np arr1 = np.array([[1, 2, 3], [4, 5, 6]]) print(type(arr1)) # <class 'numpy.ndarray'> print(arr1) # [[1 2 3] # [4 5 6]] print(arr1.dtype) # int32 print(arr1.ndim) # 2 print(arr1.shape) # (2, 3) print(arr1.size) # 6
ndarrayの生成
np.array(seq) | seq:list, tupleなど |
np.asarray(seq) | array()と同様。ただし、seqがndarrayなら同一オブジェクトへの参照 |
np.zeros([2, 3]) | 2行、3列のゼロ行列。zeros( (2, 3) )でも。 |
np.zeros_like(seq) | seqの同形(shape)かつ同型(dtype)のゼロ行列 |
np.ones( (2, 3) ) | 2行、3列の1で埋めた行列 |
np.ones_like(a) | aと同じshapeで1埋めをする。 |
np.empty() | ゼロ埋めではなく、メモリ確保をするだけで、値は不定。 |
np.empty_like(a) | |
np.arange() | range()同様の等差数列 |
np.linspace(1, 2, 5) | 初項1、末項2、項数5の等差数列 |
np.eye(3) | 単位行列から一部を切り抜いたもの、np.eye(3, 2)のように正方行列でなくても。 |
np.identity | 単位行列 |
np.ndarray.fill(value) | 数値埋め |
arr1 = np.array([1, 2, 3]) arr2 = np.asarray(arr1) # arr1と同一オブジェクト arr3 = np.array(arr1) # arr1とは別オブジェクト arr2[1]=10 print(arr1, arr2, arr3) # [ 1 10 3] [ 1 10 3] [1 2 3] a1 = np.zeros(5) print(a1) # [ 0. 0. 0. 0. 0.] a2 = np.zeros([2, 5]) print(a2) # [[ 0. 0. 0. 0. 0.] # [ 0. 0. 0. 0. 0.]] print(np.ones([2, 3, 4])) # 3次元の配列(テンソル) # [[[ 1. 1. 1. 1.] # [ 1. 1. 1. 1.] # [ 1. 1. 1. 1.]] # # [[ 1. 1. 1. 1.] # [ 1. 1. 1. 1.] # [ 1. 1. 1. 1.]]] a3 = np.empty(4) print(a3) # [ 0. 0. 262.6525 252.84 ] a4 = np.arange(5) print(a4) # [0 1 2 3 4] print(np.identity(3)) # [[ 1. 0. 0.] # [ 0. 1. 0.] # [ 0. 0. 1.]] a3.fill(100) print(a3) # [ 100. 100. 100. 100.]
※1次元ndarray(ベクトル)は縦横をnp自身が臨機応変に使い分けるが、
自分で指定するときは2次元配列にする。
横ベクトル[ [1, 2, 3] ]、 縦ベクトル[[1], [2], [3]]