2013-11-24 29 views
13

numpyで苦労して、Pythonに新しい、誰かが私を助けてくれることを祈って、ありがとう!Pythonでnumpyで2つの行列を結合する方法

from numpy import * 
A = matrix('1.0 2.0; 3.0 4.0')  
B = matrix('5.0 6.0') 
C = matrix('1.0 2.0; 3.0 4.0; 5.0 6.0') 
print "A=",A 
print "B=",B 
print "C=",C 

結果:

A= [[ 1. 2.] 
    [ 3. 4.]] 
B= [[ 5. 6.]] 
C= [[ 1. 2.] 
    [ 3. 4.] 
    [ 5. 6.]] 

質問:MATLAB C=[A;B]のように、Cを生成するために、AとBを使用する方法?

答えて

22

使用numpy.concatenate

>>> import numpy as np 
>>> np.concatenate((A, B)) 
matrix([[ 1., 2.], 
     [ 3., 4.], 
     [ 5., 6.]]) 
8

あなたはnumpy.vstackを使用することができます。

>>> np.vstack((A,B)) 
matrix([[ 1., 2.], 
     [ 3., 4.], 
     [ 5., 6.]]) 
1

既存のアレイCで作業する場合は、インプレース、それを行うことができます:

>>> from numpy import * 
>>> A = matrix('1.0 2.0; 3.0 4.0') 
>>> B = matrix('5.0 6.0') 

>>> shA=A.shape 
>>> shA 
(2L, 2L) 
>>> shB=B.shape 
>>> shB 
(1L, 2L) 

>>> C = zeros((shA[0]+shB[0],shA[1])) 
>>> C 
array([[ 0., 0.], 
     [ 0., 0.], 
     [ 0., 0.]]) 

>>> C[:shA[0]] 
array([[ 0., 0.], 
     [ 0., 0.]]) 
>>> C[:shA[0]]=A 
>>> C[shA[0]:shB[0]]=B 
>>> C 
array([[ 1., 2.], 
     [ 3., 4.], 
     [ 0., 0.]]) 
>>> C[shA[0]:shB[0]+shA[0]] 
array([[ 0., 0.]]) 
>>> C[shA[0]:shB[0]+shA[0]]=B 
>>> C 
array([[ 1., 2.], 
     [ 3., 4.], 
     [ 5., 6.]]) 
関連する問題