Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

décalage de tableau avec numpy?

17 réponses
Avatar
Sébastien Ramage
Bonjour =E0 tous
et oui j'ai une nouvelle difficult=E9 avec les tableaux de numpy

je cherche =E0 faire 2 choses sur un tableau 2D du style :
[[0.0,0.0],
[1.0,0.5],
[3.0,4.5],
[2.0,8.0],
[2.5,6.5]]

ce tableau contient des coordonn=E9es X,Y

je souhaite:
1 - le tri=E9 suivant l'une des composantes, soit X, soit Y, =E7a parait
simple mais je n'y arrive pas, numpy me "m=E9lange" toujours mes
coordonn=E9es avec la fonctions sort (les X ne correspondent plus aux Y)

2 - faire un d=E9calage c'est =E0 dire, faire passer la 1ere valeur en
2e, la 2e en 3e, etc et la derni=E8re au d=E9but (par valeur je veux
parler de couple X,Y).

Quelqu'un =E0 une id=E9e ??

Seb

7 réponses

1 2
Avatar
Méta-MCI
Bonjour !

Juste une question (complémentaire ?).
Dans cet exemple :

M = array([
[ 0, 0, 0, 2 ],
[ 8, 0, 1, 2 ],
[ 2, 4, 2, 8 ],
[ 2, 8, 3, 3 ],
[ 2, 2, 8, 4 ]
])

"2, 8" y est trois fois (plus une ambiguïté en fin/début de ligne 0 & 1).
Que dois répondre la solution que tu cherches ?

@+

Michel Claveau


PS : je ne donnerai pas de solution, ne pratiquant pas numpy
Avatar
Sébastien Ramage
On 4 mai, 10:26, "Méta-MCI" wrote:
Bonjour !

Juste une question (complémentaire ?).
Dans cet exemple :

M = array([
[ 0, 0, 0, 2 ],
[ 8, 0, 1, 2 ],
[ 2, 4, 2, 8 ],
[ 2, 8, 3, 3 ],
[ 2, 2, 8, 4 ]
])

"2, 8" y est trois fois (plus une ambiguïté en fin/début de ligne 0 & 1).
Que dois répondre la solution que tu cherches ?

@+

Michel Claveau

PS : je ne donnerai pas de solution, ne pratiquant pas numpy


d'où vient ton exemple ???
perso je n'ai jamais donné ça
chez moi il s'agit de couple de flotant X, Y
0.0 , 2.0 <= attention à la virgule et aux points ;)

Avatar
Sébastien Ramage
On 4 mai, 10:41, fred wrote:

À voir...


Pour info, s'il n'y a pas de gourou scipy ici (elby ? ;-),
tu obtiendras certainement une réponse sur la liste de scipy...

--http://scipy.org/FredericPetit


je vais tenter de ce coté là alors
merci encore

Seb


Avatar
MCI, Shadok Gouroudoudou
Re !

ça ne ressemble plus à un tableau de points, ça...


Si ; dans un espace à quatre dimensions...






--
@-salutations

Michel Claveau

Avatar
vml
On 4 mai, 10:13, Sébastien Ramage wrote:
On 4 mai, 09:08, fred wrote:





la doc de numpy est horrible je ne trouve rien et les exemples sont
loin d'être clair$

bref encore une petite question
comment on trouve l'index d'une valeur dans un tableau? (à l'image de
la méthode "index" de l'objet "list" )
c'est à dire je connais mon couple X,Y et je veux savoir où il e st
dans le tableau
In [6]: print a[1,0,2]

14


Euhhh.., je me demande après coup si ça répond bien à la questi on... ;-)

--http://scipy.org/FredericPetit


sans vouloir te vexer je ne comprends rien à ton exemple
je reformule ma question avec un exemple ça sera peut-être plus clair
j'ai un tableau 2D

M = array([[ 0. , 0. ],
[ 1. , 0.5],
[ 3. , 4.5],
[ 2. , 8. ],
[ 2.5, 6.5]])

et je voudrais trouver la position du point [2.0,8.0] par exemple
donc je voudrais un truc du genre :
find_index(M, [2.0,8.0])

et que la fonction me retourne 3


ca serait pas un truc du genre

f=[2.,8.]

(M==f).nonzero()

ou bien


i=where(M==f)


?




Avatar
Sébastien Ramage
j'ai trouvé un truc qui marche mais loin d'être direct

M = array([[0. ,0. ],
[1. ,0.5],



[3. ,4.5],
[2. ,8. ],
[2. ,6. ],
[ 2.5,6.5]])
t = M == [2.0,8.0]
t.prod(1).nonzero()[0][0]
3






Avatar
JBB
Réponse à moi même:

actuellement je fais ça :

def find_index(tab, point):
#cherche un point dans le tableau et retourne sa position
#retourne -1 si le point n'est pas dans le tableau
i = 0
for p in tab:
if p.tolist() == list(point):
break
i += 1
if i == len(tab):
i = -1
return i

mais je ne trouve pas ça formidable, il y a certainement une façon
plus rapide de le faire

Je vois pas trop comment tu pourrais faire autrement!

Et que fait tu si ton point apparait 2 fois? tu retourne le 1er ou le 2eme?

La bonne question n'est pas comment je retrouve l'index? mais ai je vraiment besoin de retrouver l'index?
sinon si ta recherche sequentielle ne te satisfait pas,
il ne te reste plus qu'à utiliser un dictionnaire en plus ou a chaque point tu associe l'index dans le tableau.

1 2