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
Liens | Site |
---|---|
numpy.concatenate | scipy doc |
numpy.c | scipy doc |
What does the c underscore expression c_ do exactly? |
stackoverflow |
python why use numpy.r_ instead of concatenate | stackoverflow |