2016-05-12 27 views
1

でIは、2つの配列AB2つの多次元配列を連結numpyの

>> np.shape(A) 
>> (7, 6, 2) 
>> np.shape(B) 
>> (6,2) 

は今、私はnp.concatenate()

を試み AA[8] = B

(8,6,2)に拡張されるように二つの配列を連結するました

>> np.concatenate((A,B),axis = 0) 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-40-d614e94cfc50> in <module>() 
----> 1 np.concatenate((A,B),axis = 0) 

ValueError: all the input arrays must have same number of dimensions 

およびnp.vstack()

>> np.vstack((A,B)) 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-41-7c091695f277> in <module>() 
----> 1 np.vstack((A,B)) 
//anaconda/lib/python2.7/site-packages/numpy/core/shape_base.pyc in vstack(tup) 
    228 
    229  """ 
--> 230  return _nx.concatenate([atleast_2d(_m) for _m in tup], 0) 
    231 
    232 def hstack(tup): 

ValueError: all the input arrays must have same number of dimensions 
+3

います[この](http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy。 expand_dims.html)を連結の前に挿入します。 – sascha

+0

ありがとう、それは最初に 'expand_dims'と' np.concatanate'を使って動作しました。 btwより表現力の高い 'np.vstack'を使用してからconcatを使用するとどういう意味ですか? –

+0

あなたはnp.vstackも試しているのを見たことはありませんでした。この場合、私はvstackを好むでしょう。なぜなら、それはparamsを必要とせず、何が起こっているのかを即座に見ることができるからです。このexpand_dimsを大量に行う必要がある場合は、ドキュメントに記載されているnewaxis-approach(Bに索引付けするだけです)を試すこともできます。少し短くなっています。 – sascha

答えて

2

多分最も簡単な方法は、次のようにnumpyのnewaxisを使用することです。また、参照(@saschaあなたがvstackを使用することができます述べたように

(7, 6, 2) (6, 2) (8, 6, 2) 

:この、その結果、

import numpy as np 

A = np.zeros((7, 6, 2)) 
B = np.zeros((6,2)) 
C = np.concatenate((A,B[np.newaxis,:,:]),axis=0) 
print(A.shape,B.shape,C.shape) 

hstack,dstack)を使用して、暗黙軸(それぞれaxis = 0,axis = 1axis =2):

D = np.vstack((A,B[np.newaxis,:,:])) 
print(D.shape) 

、結果:

(8, 6, 2)