lecteur longue durée, premier éditeur.type (s) d'opérande non pris en charge pour *: 'numpy.ndarray' et 'numpy.float64'
J'ai cherché autour de google et empiler le débordement, mais n'a pas vraiment été capable de trouver une réponse générale à cette question. Je reçois un "type d'opérande non supporté pour *: 'numpy.ndarray' et 'numpy.float64'" dans python 2.7.3 en utilisant numpy 1.6.2. L'erreur provient de la multiplication d'un tableau numpy et d'un float numpy, mais cela n'arrive pas à chaque fois.
Par exemple:
x = np.tan(1) # numpy.float64
y = np.array([0,1,2,3]) # numpy.ndarray
np.multiply(x,y) # works no problem
Ou
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
deux travaillent
Maintenant, pour les enfants de problème:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),-27)**40)),
np.tan(np.abs(np.multiply(-31,41))))
ou, avec x définis comme ci-dessus:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)),x)
les deux produisent l'erreur: NotImplemented
Je connais les fonctions et de nombres aléatoires sembler étrange, mais sur le plan conceptuel cela devrait fonctionner, comme cela a fonctionné lorsque les deux ont été mis à des variables individuellement.
Pourquoi cela se produit-il? Comment puis-je le réparer dans un sens général?
Merci beaucoup! Jason
Je pense que vous avez attrapé un bug dans le code, vous pouvez le signaler à la personnes numpy. Pour l'enregistrement, si 'a' est' np.ndarray' et 'x' est' np.float64', alors à la fois 'x * a' et' a * x [...] 'fonctionnent, mais aucun de' a * x', 'a + x',' a/x' ou 'a - x' font. Il est difficile de comprendre pourquoi, si la méthode '__mul__' de' a' ne peut pas le gérer, '__rmul__' de 'x' n'est pas appelé, car il semble savoir comment gérer le cas ... – Jaime
Merci beaucoup pour vérifier cela pour moi. Je vais essayer de le signaler comme un problème en numpy. Pensez-vous qu'il existe peut-être un moyen de contourner ce problème? – Jason
Si vous remplacez 'x' par' x [...] 'cela fonctionne, mais c'est un hack méchant ... – Jaime