Lettore di lunga durata, scrittore prima volta.tipo/i di operando non supportato per *: 'numpy.ndarray' e 'numpy.float64'
Ho cercato in giro su google e lo stack overflow, ma non ero davvero in grado di trovare una risposta generale a questa domanda.
Ricevo un "tipo di operando non supportato per *: errore 'numpy.ndarray' e 'numpy.float64'" in python 2.7.3 utilizzando numpy 1.6.2.
L'errore deriva dal moltiplicare un array numpy e un numpy float, ma non succede ogni volta.
Ad esempio:
x = np.tan(1) # numpy.float64
y = np.array([0,1,2,3]) # numpy.ndarray
np.multiply(x,y) # works no problem
O
x = np.tan(np.abs(np.multiply(-31,41))) # numpy.float64
y = np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)) # numpy.ndarray
np.multiply(x,y) # works no problem
Entrambi lavorano
Ora per i bambini difficili:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),-27)**40)),
np.tan(np.abs(np.multiply(-31,41))))
o, con x definiti come sopra:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)),x)
entrambi producono l'errore: NotImplemented
So che le funzioni e numeri casuali sembrano strano, ma concettualmente questo dovrebbe funzionare ancora, come ha funzionato quando entrambi sono stati fissati alle variabili individualmente.
Perché succede? Come posso risolverlo in senso generale?
Grazie mille! Jason
Penso che tu abbia preso un bug nel codice, si può decidere di segnalarlo alla persone intorpidite. Per la cronaca, se 'a' è' np.ndarray' e 'x' è' np.float64', quindi entrambi 'x * a' e' a * x [...] 'funzionano, ma nessuno di' a * x', 'a + x',' a/x' o 'a - x' fare. È difficile capire perché, se il metodo '__mul__' di' a' non è in grado di gestirlo, '__rmul__' di' x' non viene chiamato, in quanto sembra sapere come gestire il caso ... – Jaime
Grazie mille per controllandolo per me. Proverò a segnalarlo come un problema in numpy. Pensi che ci possa essere un modo per aggirare questo problema? – Jason
Se si sostituisce 'x' con' x [...] 'funziona, ma è un brutto scherzo ... – Jaime