Bonjour,
Le titre est assez explicite je pense mais je vais quand même détailler ma question.
Alors j'ai une matrice A de dimension (a, 4) et une matrice B de dimension (b, 4) avec b > a
Je souhaite extraire de ma matrice B ma matrice A qui est incluse dans ma matrice B.
Pour ce faire je doit vérifier que les éléments (des ID) de la première colonne de ma matrice B se trouvent bien dans ma matrice A.
Si possible je souhaite également récupérer une matrice R (matrice dite de reste) contenant les éléments de ma matrice B qui ne sont pas dans ma matrice A.
Je sais comment extraire une matrice dés lors que l'on connait les index, sauf que dans mon cas c'est pas forcément possible puisque ma Matrice A n'est pas nécessairement en un seul bloc dans ma Matrice B.
Pour illustrer mon problème :
Ce que je souhaite obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 >>> Matrice_A = numpy.array([[[10,1.5,-3.8,8.0],[20,10.2,5.2,6.7],[30,0.5,-6.2,-7.1],[40,-0.7,-0.6,-0.5]]]) >>> Matrice_A array([[[ 10. , 1.5, -3.8, 8. ], [ 20. , 10.2, 5.2, 6.7], [ 30. , 0.5, -6.2, -7.1], [ 40. , -0.7, -0.6, -0.5]]]) >>> Matrice_B = numpy.array([[[10,2.7,4.8,-5.8],[15,-1.4,-6.4,8.1],[20,12.4,-7.1,4.9],[25,-1.5,6.2,-4.8],[30,-6.8,0.47,3.8],[35,5.4,-4.8,10.5],[40,16.2,5.7,-8.3]]]) >>> Matrice_B array([[[ 10. , 2.7 , 4.8 , -5.8 ], [ 15. , -1.4 , -6.4 , 8.1 ], [ 20. , 12.4 , -7.1 , 4.9 ], [ 25. , -1.5 , 6.2 , -4.8 ], [ 30. , -6.8 , 0.47, 3.8 ], [ 35. , 5.4 , -4.8 , 10.5 ], [ 40. , 16.2 , 5.7 , -8.3 ]]])
J'ai commencé à me lancé sur une solution qui consiste à lire chaque ID de ma Matrice B et de les chercher dans ma Matrice A :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 >>> Matrice_A_extraite_de_B array([[[ 10. , 2.7 , 4.8 , -5.8 ], [ 20. , 12.4 , -7.1 , 4.9 ], [ 30. , -6.8 , 0.47, 3.8 ], [ 40. , 16.2 , 5.7 , -8.3 ]]]) >>> Matrice_R array([[[ 15. , -1.4, -6.4, 8.1], [ 25. , -1.5, 6.2, -4.8], [ 35. , 5.4, -4.8, 10.5]]])
- si l'ID existe alors j'ajoute la ligne correspondante dans une nouvelle matrice que je nomme Matrice_A_extraite_de_B;
- si l'ID n'existe pas alors je rajoute la ligne correspondante une matrice que j'appel Matrice_R.
Sauf que cette solution risque de m'alourdir la tâche car je travail sur des matrices de plusieurs centaines de milliers de lignes.
Du coup je m'oriente vers vous afin de savoir s'il existe une méthode plus efficace que celle sur laquelle je me lance.
Merci d'avance pour votre aide.
Partager