1

2つのndarrayがある場合:

a.shape   # returns (200,300, 3)
b.shape   # returns (200, 300)

numpy.vstack((a,b))  # Gives error

エラーを出力します:ValueError:配列は同じ数の次元を持っている必要があります

どのような作品を作ってみvstack((a.reshape(-1,300), b)ましたが、出力がとても変です。

4

1 に答える 1

0

実際に必要な最終的な形状は指定しません。(200、300、4)の場合は、dstack代わりに次を使用できます。

>>> import numpy as np
>>> a = np.random.random((200,300,3))
>>> b = np.random.random((200,300))
>>> c = np.dstack((a,b)) 
>>> c.shape
(200, 300, 4)

基本的に、スタックする場合、長さは他のすべての軸で一致する必要があります。

[コメントに基づいて更新:]

(800、300)が必要な場合は、次のように試すことができます。

>>> a = np.ones((2, 3, 3)) * np.array([1,2,3])
>>> b = np.ones((2, 3)) * 4
>>> c = np.dstack((a,b))
>>> c
array([[[ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.]],

       [[ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.],
        [ 1.,  2.,  3.,  4.]]])
>>> c.T.reshape(c.shape[0]*c.shape[-1], -1)
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.],
       [ 2.,  2.,  2.],
       [ 2.,  2.,  2.],
       [ 3.,  3.,  3.],
       [ 3.,  3.,  3.],
       [ 4.,  4.,  4.],
       [ 4.,  4.,  4.]])
>>> c.T.reshape(c.shape[0]*c.shape[-1], -1).shape
(8, 3)
于 2012-10-14T16:59:45.760 に答える