Fusionner deux matrices avec numpy sous python

Published: 24 février 2017

DMCA.com Protection Status

Pour fusionner deux matrices avec numpy on peut utiliser numpy.concatenate, illustration avec 2 matrices à une dimension:

>>> A = np.array(([1,2,3]))
>>> B = np.array(([4,5,6]))
>>> C = np.concatenate((A, B))
>>> C
array([1, 2, 3, 4, 5, 6])

Avec deux matrices de dimensions (2,2):

>>> A = np.array(([1,2],[3,4]))
>>> A
array([[1, 2],
       [3, 4]])
>>> B = np.array(([5,6],[7,8]))
>>> B
array([[5, 6],
       [7, 8]])
>>> C = np.concatenate((A, B))
>>> C
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

On peut aussi specifier l'axe sur lequel fusionner les deux matrices:

>>> A = np.array(([1,2],[3,4]))
>>> A
array([[1, 2],
       [3, 4]])
>>> B = np.array(([5,6],[7,8]))
>>> B
array([[5, 6],
       [7, 8]])
>>> C = np.concatenate((A, B), axis=1)
>>> C
array([[1, 2, 5, 6],
       [3, 4, 7, 8]])
>>> C = np.concatenate((A, B), axis=0)
>>> C
array([[1, 2],
       [3, 4],
       [5, 6],
       [7, 8]])

Pour fusionner deux matrices de dimensions différentes par exemple A (2,2) et B (3,2) ce n'est possible que sur l'axe 0, illustration:

>>> A = np.array(([1,2],[3,4]))
>>> A
array([[1, 2],
       [3, 4]])
>>> B = np.array(([5,6],[7,8],[9,10]))
>>> B
array([[ 5,  6],
       [ 7,  8],
       [ 9, 10]])
>>> C = np.concatenate((A, B), axis=0)
>>> C
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10]])
>>> C = np.concatenate((A, B), axis=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: array dimensions must agree except for d_0

Pour une discussion sur la difference entre concatenate, c_ et r_ voir: python why use numpy.r_ instead of concatenate.

Références