Numpyというpythonの数値計算ライブラリを最近よく使っています。
ndarrayというN次元配列型が定義されていて便利です。
さて、複数の配列を結合させたい場合、Numpyには以下のようなメソッドが用意されています。
numpy.r- : 行方向への結合
numpy.c_ : 列方向への結合
import numpy as np
a = np.ones((2, 3)) # 2×3で要素が全て1の行列
b = np.zeros((2, 3)) # 2×3で要素が全て0の行列
c = np.r_[a, b]
d = np.c_[a, b]
print(c)
print(d)
>[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
>[[ 1. 1. 1. 0. 0. 0.]
[ 1. 1. 1. 0. 0. 0.]]
結合したいndarrayを[]で囲んでメソッドを使うと、
こんな感じでそれぞれの方向に行列を結合してくれます
参考: Numpyで行列の連結
これを使うと、2つのN×M配列から2N×MとN×2Mの2次元配列を作ることができます。
ではN×M×2のような3次元配列は作れないのかという話になるのですが、
見た限りそれ用のメソッドは用意されてないっぽいです。
以下のように配列生成関数numpy.array()にndarrayを要素に持つタプルを与えることで実現はできます。
e = np.array((a, b))
print(e)
>[[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]]]