2017-04-10 20 views
1

私はPythonにいくつか問題があります。Pythonは2つの行列を並べて追加します

A= [ [1,2,3] 
     [4,5,6] 
     ] 

    B = [ [10,11] 
     [12,13] 
     ] 

私が持っていると思います:

C = [A B] 
    = [ [1,2,3, 10, 11] 
     [4,5,6, 12, 13] 
     ] 

は、どのように私はPythonでそれを行うのですか?

答えて

4

np.hstackの基本的な使用方法について説明しています。

np.hstack((A, B)) 

等価屈折率のトリックもあります:

np.c_[A, B] 
2

あなたは基本的にはzip圧縮(A、B)オブジェクト内の各リストを追加し、このような何かを行うことができます。

>>> [x + y for x, y in zip(A, B)] 
[[1, 2, 3, 10, 11], [4, 5, 6, 12, 13]] 
3

また、np.concatenateaxis=1

In [207]: np.concatenate((A, B), axis=1) 
Out[207]: 
array([[ 1, 2, 3, 10, 11], 
     [ 4, 5, 6, 12, 13]]) 

パフォーマンスを気にする場合は、np.concatenateが実際の戦争馬です。

In [215]: %timeit np.concatenate((A, B), 1) 
The slowest run took 12.10 times longer than the fastest. 
100000 loops, best of 3: 3.1 µs per loop 

In [214]: %timeit np.hstack((A,B)) 
The slowest run took 6.85 times longer than the fastest. 
100000 loops, best of 3: 12.5 µs per loop 

In [216]: %timeit np.c_[A, B] 
10000 loops, best of 3: 48.7 µs per loop 
+1

おそらくそれは 'ことを言及する価値がありますnp.hstack'は実際には 'np.concatenate'を使用しているので、高速化はできません。最大限のパフォーマンスが必要な場合を除いて、より高いレベルのAPIを使用することをお勧めします。 – wim

1

は、あなたがnumpyの(自分のタグごとに)配列またはリストのリスト(タイトルごとに行列)について質問している場合教えて...しかし、ことはできません。

をあなただけそれらを追加リストを連結します一緒:

A = [[1,2,3],[4,5,6]] 
B = [[10,11],[12,13]] 
C = [A[0]+B[0],A[1]+B[1]] 

print C 

>>> 
[[1, 2, 3, 10, 11], [4, 5, 6, 12, 13]] 

あなたはappendメソッドを使用することができますで開始する配列を持っている場合:

import numpy as np 
A = np.array([[1,2,3],[4,5,6]]) 
B = np.array([[10,11],[12,13]]) 
C = np.array([np.append(A[0],B[0]),np.append(A[1],B[1])]) 

print C 

>>> 
[[ 1 2 3 10 11] 
[ 4 5 6 12 13]] 
関連する問題