1. ホーム
  2. python

[Python] numpy library array splicing np.concatenate 公式ドキュメントの詳細と例です。

2022-02-20 03:56:45
<パス

実際には、しばしば配列の連結の問題に遭遇しますが、numpyライブラリのconcatenateは非常に優れた配列操作関数です。

1, concatenate((a1, a2, ...), axis=0) 公式ドキュメントの詳細情報

concatenate(...)
    concatenate((a1, a2, ...) , axis=0)

    Join a sequence of arrays along an existing axis.

    Parameters
    ----------
    a1, a2, ... : sequence of array_like
        The arrays must have the same shape, except in the dimension
        corresponding to `axis` (the first, by default).
    axis : int, optional
        The axis along which the arrays will be joined. default is 0.

    Returns
    -------
    res : ndarray
        The concatenated array.

    See Also
    --------
    ma.concatenate : Concatenate function that preserves input masks.
    array_split : Split an array into multiple sub-arrays of equal or
                  near-equal size.
    split : Split array into a list of multiple sub-arrays of equal size.
    hsplit : Split array into multiple sub-arrays horizontally (column wise)
    vsplit : Split array into multiple sub-arrays vertically (row wise)
    dsplit : Split array into multiple sub-arrays along the 3rd axis (depth).
    stack : Stack a sequence of arrays along a new axis.
    hstack : Stack arrays in sequence horizontally (column wise)
    vstack : Stack arrays in sequence vertically (row wise)
    dstack : Stack arrays in sequence depth wise (along third dimension)


2. パラメータ パラメータ

  • 渡されるパラメータは、必ず タプルまたは複数の配列のリスト

  • また、ステッチの方向も指定します。デフォルトは axis = 0 で、axis 0 の配列オブジェクトは縦にステッチされます(縦のステッチは axis= 1 に沿って行われます)。 注:一般にaxis = 0はその軸で配列を操作し、操作方向はもう一方の軸、つまりaxis = 1になることを意味します。

In [23]: a = np.array([[1, 2], [3, 4]])

In [24]: b = np.array([[5, 6]])

In [25]: np.concatenate((a, b), axis=0)
Out[25]:
array([[1, 2],
       [3, 4],
       [5, 6]])

  • で渡された配列は は同じ形でなければなりません。 ここで、同じ形状は ステッチ方向を軸としたアレイ間の形状が同じであればよい

水平0軸にaxis=1の配列オブジェクトをステッチした場合、aはaxis=0軸2の2*2次元配列、bはaxis=0軸1の1*2次元配列で、両者は形状が等しくないため、エラーが報告されます。

In [27]: np.concatenate((a,b),axis = 1)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)

()
----> 1 np.concatenate((a,b),axis = 1)

ValueError: all the input array dimensions except for the concatenation axis must match exactly
Transpose b to get b as a 2*1 dimensional array.
In [28]: np.concatenate((a,b.T),axis = 1)
Out[28]:
array([[1, 2, 5],
       [3, 4, 6]])
In [28]: np.concatenate((a,b.T),axis = 1) Out[28]: array([[1, 2, 5], [3, 4, 6]])