shape | 配列のサイズを指定します。 二次以上は(*, *)(タプル)で指定します。 |
>>> np.arange(1,10) array([1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> np.arange(1,10).reshape((3,3)) array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> vec=np.array([1,2,3]) >>> vec[np.newaxis,:] array([[1, 2, 3]])
>>> vec=np.array([1,2,3]) >>> vec[:,np.newaxis] array([[1], [2], [3]])
>>> a = np.array([1,2,3]) >>> b = np.array([4,5]) >>> np.hstack((a,b)) array([1, 2, 3, 4, 5])
#2×3行列と2×1行列の列方向結合(2×4行列) >>> a = np.array([[1,2,3],[4,5,6]]) >>> a array([[1, 2, 3], [4, 5, 6]]) >>> b = np.array([[0],[0]]) >>> b array([[0], [0]]) >>> np.hstack((a,b)) array([[1, 2, 3, 0], [4, 5, 6, 0]]) #3次元列ベクトルどうしの結合(3×2行列) >>> a = np.array([[1],[2],[3]]) >>> a array([[1], [2], [3]]) >>> b = np.array([[4],[5],[6]]) >>> b array([[4], [5], [6]]) >>> np.hstack((a,b)) array([[1, 4], [2, 5], [3, 6]])
>>> a = np.array([1,2,3]) >>> b = np.array([4,5,6]) >>> np.vstack((a,b)) array([[1, 2, 3], [4, 5, 6]]) >>> a = np.array([[1],[2],[3]]) >>> b = np.array([[4],[5],[6]]) >>> np.vstack((a,b)) array([[1], [2], [3], [4], [5], [6]])
>>> a = np.array([0,1,2]) >>> b = np.array([3,4,5]) >>> np.dstack((a,b)) array([[[0, 3], [1, 4], [2, 5]]]) >>> a = np.array([[1],[2],[3]]) >>> a array([[1], [2], [3]]) >>> b = np.array([[4],[5],[6]]) >>> b array([[4], [5], [6]]) >>> np.dstack((a,b)) array([[[1, 4]], [[2, 5]], [[3, 6]]])
(array, array, ...) | 結合したい配列を指定します。 |
axis | 配列を結合する軸方向を指定します。 未指定時は“0”が適用されます(1次(縦/行)方向)。 1を指定すると2次(横/列)方向に結合します。 |
>>> a = np.array([[1,2],[3,4]]) >>> b = np.array([[5,6]]) >>> np.concatenate((a,b)) array([[1, 2], [3, 4], [5, 6]]) >>> b = np.array([[5],[6]]) >>> np.concatenate((a,b),axis=1) array([[1, 2, 5], [3, 4, 6]])
(array, array, ...) | 結合したい配列を指定します。 指定した配列は同じ型(shape)でなければなりません。 |
axis | 配列を結合する軸方向を指定します。 未指定時は“0”が適用されます(1次(縦/行)方向)。 1を指定すると2次(横/列)方向に結合します。 |
>>> a = np.array([1,2,3]) >>> b = np.array([4,5,6]) >>> np.stack((a,b)) array([[1, 2, 3], [4, 5, 6]]) >>> np.stack((a,b),axis=1) array([[1, 4], [2, 5], [3, 6]])
array | 分割したい配列を指定します。 |
indices or sections | 分割したい配列要素数が割り切れる数で指定します。 割り切れない場合はエラーが出ます。 |
axis | 配列を結合する軸方向を指定します。 未指定時は“0”が適用されます(1次(縦/行)方向)。 1を指定すると2次(横/列)方向に結合します。 |
#一次配列 >>> a = np.array([0,1,2,3,4,5,6,7,8]) >>> np.split(a,3) [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])] #上記と同じ結果が得られます。 >>> np.hsplit(a,3) [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])] #indices or sectionsで配列要素数が割り切れない場合、エラーがでます。 >>> np.hsplita(a,2) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'numpy' has no attribute 'hsplita' #多次元配列 >>> a = np.array([[1,2,3],[4,5,6],[7,8,9]]) >>> a array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) >>> np.hsplit(a,3) [array([[1], [4], [7]]), array([[2], [5], [8]]), array([[3], [6], [9]])] >>> np.vsplit(a,3) [array([[1, 2, 3]]), array([[4, 5, 6]]), array([[7, 8, 9]])] #axis = 1を指定することでvsplitと同じ結果が得られます。 >>> np.split(a,3,axis=1) [array([[1], [4], [7]]), array([[2], [5], [8]]), array([[3], [6], [9]])]