Bonjour,
j'ai un petit souci (comme souvent). Il doit y avoir quelque chose qui m'échappe dans l'utilisation des numpy.arrays.
Voici le code incriminé :
Ce code exécuté tel quel m'interdit la somme finale (ValueError: shape mismatch: objects cannot be broadcast to a single shape
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 import numpy def func(x): return [x,x] a=[[1,1],[2,2],[3,3]] a=numpy.array(a) print a print numpy.shape(a) print type(a) b=numpy.frompyfunc(func,1,1)([1,2,3]) print b print numpy.shape(b) print type(b) #b=numpy.array(b.tolist()) print a+b
). Or on possède bien deux numpy.arrays qui contiennent les mêmes valeurs. Seul la "shape" est diffférente, et c'est bien ça le problème.
1 - Pourquoi un coup il s'agit de (3,2) et un coup de (3,) ?
Du coup j'essaierai bien de faire en sorte que l'utilisation de frompyfunc me renvoit un tableau avec la bonne shape, mais je ne vois pas comment...
2 - Une idée sur l'utilisation de numpy.frompyfunc ?
Alors, bien sûr, j'ai une solution de secours : dé-commenter la ligne commentée. Ceci dit, je ne comprends pas pourquoi elle fonctionne : prendre un array, le convertir en liste pour le reconvertir en array : et hop, il récupère une bonne "shape" !C'est un peu mystérieux et je dois perdre en performance.
Bref, je suis preneur de toute solution me permettant d'appeler via frompyfunc une fonction que j'ai définie, et d'obtenir en sortie des tableaux avec des "shapes" normales, c'est à dire qui finissent pas sur une virgule !
Merci de votre aide !
Partager