L = [a、b、c]のようなnumpy配列を含むリストがあります。a、b、cは、N_aがT、N_bがT、N_cがサイズのnumpy配列です。
a、b、cを行ごとに連結し、形状(N_a + N_b + N_c、T)のnumpy配列を取得します。明らかに1つのソリューションがforループを実行してnumpy.concatenateを使用していますが、これを行うPython的な方法はありますか?
ありがとう
使用する - numpy.vstack
。
L = (a,b,c)
arr = np.vstack(L)
help('concatenate'
には次の署名があります。
concatenate(...)
concatenate((a1, a2, ...), axis=0)
Join a sequence of arrays together.
(a1, a2, ...)
はリストのように見えますよね?そして、デフォルトの軸は、結合したい軸です。試してみましょう:
In [149]: L = [np.ones((3,2)), np.zeros((2,2)), np.ones((4,2))]
In [150]: np.concatenate(L)
Out[150]:
array([[ 1., 1.],
[ 1., 1.],
[ 1., 1.],
[ 0., 0.],
[ 0., 0.],
[ 1., 1.],
[ 1., 1.],
[ 1., 1.],
[ 1., 1.]])
vstack
もこれを行いますが、そのコードを見てください:
def vstack(tup):
return np.concatenate([atleast_2d(_m) for _m in tup], 0)
余分なことは、コンポーネント配列に2次元があることを確認することです。