Numpyとvstackメソッドを使って1次元配列を多次元配列に結合する方法

スポンサーリンク

この記事では、Numpyの vstack() メソッドとは何か、そしてPythonでこれをどのように使うかを学びます。

それでは始めましょう。

スポンサーリンク

numpy.vstack()メソッドって何?

Numpy.vstack() は Python の関数で、配列のタプルを受け取り、それらを1次元目に沿って縦に連結して1つの配列にするものです。

そのシンタックスは

numpy.vstack(tup)

パラメータはタプルで、これは連結したい ndarray の列です。

配列は、最初の軸を除くすべての軸に沿って同じ形状でなければなりません。

このメソッドは,入力で与えられた配列を積み重ねて作られた ndarray を返します.返される配列は少なくとも2次元です。

Numpyの例 vstack()

線形1次元配列に対して,すべての配列を縦に積み重ねて2次元配列にします.入力配列はすべて同じ長さでなければなりません。

import numpy
 
a = numpy.array([1, 2, 3, 4, 5])
b = numpy.array([6, 7, 8, 9, 10])
c = numpy.array([11, 12, 13, 14, 15])
 
print("Shape of array A:", a.shape)
print("Shape of array B:", b.shape)
print("Shape of array C:", c.shape)
print()
 
stack = numpy.vstack((a, b, c))
print("Shape of new stacked array:", stack.shape)
print("Stacked array is")
print(stack)
Shape of array A: (5,)
Shape of array B: (5,)
Shape of array C: (5,)
 
Shape of new stacked array: (3, 5)
Stacked array is
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]]

N 次元配列の場合,次の例に示すように,配列は最初の次元に沿ってスタックされます。

import numpy
 
a = numpy.array([ [1, 2, 3], [4, 5, 6] ])
b = numpy.array([ [7, 8, 9], [10, 11, 12] ])
 
print("Shape of array A:", a.shape)
print("Shape of array B:", b.shape)
print()
 
stack = numpy.vstack((a, b))
print("Shape of new stacked array:", stack.shape)
print("Array is")
print(stack)

結果は以下の通りです。

Shape of array A: (2, 3)
Shape of array B: (2, 3)
 
Shape of new stacked array: (4, 3)
Array is
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

N次元配列の場合、以下のように1次元を除くすべての次元で配列の形状が同じである必要があります。

import numpy
 
a = numpy.array([ [1, 2], [3, 4] ])
b = numpy.array([ [5, 6], [7, 8], [9, 10] ])
 
print("Shape of array A:", a.shape)
print("Shape of array B:", b.shape)
print()
 
stack = numpy.vstack((a, b))
print("Shape of new stacked array:", stack.shape)
print("Array is")
print(stack)
Shape of array A: (2, 2)
Shape of array B: (3, 2)
 
Shape of new stacked array: (5, 2)
Array is
[[ 1  2]
 [ 3  4]
 [ 5  6]
 [ 7  8]
 [ 9 10]]

まとめ

今回の Python チュートリアルでは、NumPy モジュールに含まれる vstack() メソッドについて学びました。

この関数は、最大3次元の配列に対して最も意味を持ちます。

例えば、高さ(1軸目)、幅(2軸目)、r/g/bチャンネル(3軸目)を持つピクセルデータについてです。

お読みいただきありがとうございました。

タイトルとURLをコピーしました