Bonjour à tous,
Voilà j'ai un soucis que je ne comprend pas.
En fait je souhaite comparer deux matrices de n lignes et 1 colonne.
Alors je souhaite comparer la matrice x qui est le résultat de la soustraction entre mes deux premières tables (tabMaxValues_OI et tabMaxValues_NIF), et je souhaite savoir si x est null.
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
18
19
20
21
22
23
24
25 import numpy OIF = "/dossier_1/test.txt" NIF = "/dossier_2/test.txt" tabMaxValues_OIF = numpy.genfromtxt(OIF, usecols=tuple(range(0,4)),skip_header=10, skip_footer=14) tabMinValues_OIF = numpy.genfromtxt(OIF, usecols=tuple(range(0,4)),skip_header=24) tabMaxValues_NIF = numpy.genfromtxt(NIF, usecols=tuple(range(0,4)),skip_header=10, skip_footer=14) tabMinValues_NIF = numpy.genfromtxt(NIF, usecols=tuple(range(0,4)),skip_header=24) x = (tabMaxValues_OIF[:,0] - tabMaxValues_NIF[:,0]) print x matrix_null = numpy.zeros([len(x),]) if x == matrix_null : print "ID OK" else : print "ID NOK"
Pour ce faire je construis une matrice nulle (dite matrix_null) et je la comparer à x. Matrix_null est censé faire la même dimension que x puisque j'utilise len(x) lorsque je construis matrix_null
Je m'attendais à ce que ma condition if fonctionne et me renvoie True ou False sauf que j'obtiens le message d'erreur suivant :
Alors j'ai testé avec any() et all() mais ça ne résous pas mon problème, car durant mes différents test lorsque x et matrix_null sont différents il me renvoie OK alors qu'il devrait me renvoyer NOK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Traceback (most recent call last): File "delta.py", line 21, in <module> if x == matrix_null : ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Pour être honnête je n'ai pas encore regardé du coté de any() et all() en quoi ils consistent, mais en faisant un print x.all() et un print matrix_null.all() il me renvoie False pour les deux, du coup je comprend pourquoi il me renvoie OK.
Le but de ce script est de valider que les deux premières colonnes de mes deux premières tables sont les mêmes (les valeurs correspondent à des ID et sont donc des entiers), si je fais a différence et que je trouve une matrice égale à 0 alors je peux être sûr que je vais comparer les mêmes id par la suite, dans le cas où je n'ai pas que des 0 cela voudra dire qu'il y a des ID différents et que la comparaison ne peut être faite directement.
J'espère avoir été clair sinon n'hésité pas à me demander.
Merci d'avance pour votre aide.
Partager