od dawna czytnik, pierwszy pisarz.nieobsługiwane typy argumentów dla *: 'numpy.ndarray' i 'numpy.float64'
Szukałem w serwisie Google i przepełnienia stosu, ale nie byłem w stanie znaleźć ogólnej odpowiedzi na to pytanie.
Otrzymuję "nieobsługiwane typy argumentów dla *:" numpy.ndarray "i" numpy.float64 "" błąd w Pythonie 2.7.3 za pomocą numpy 1.6.2.
Błąd pochodzi z pomnożenia tablicy numpy i zmiennej numpy, ale nie dzieje się za każdym razem.
Na przykład:
x = np.tan(1) # numpy.float64
y = np.array([0,1,2,3]) # numpy.ndarray
np.multiply(x,y) # works no problem
Albo
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
zarówno do pracy
Teraz dla dzieci problem:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),-27)**40)),
np.tan(np.abs(np.multiply(-31,41))))
lub zx zdefiniowane jak wyżej:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)),x)
zarówno produkować błąd: NotImplemented
wiem losowe funkcje i numery wydawać dziwne, ale koncepcyjnie to nadal powinno działać, jak to działa, gdy obie zmienne były ustawione indywidualnie.
Dlaczego tak się dzieje? Jak mogę to naprawić w sensie ogólnym?
Dziękuję bardzo! Jason
Chyba połów błąd w kodzie, może chcesz zgłosić go do numpy ludzie. Dla zapisu, jeśli 'a' to' np.ndarray', a 'x' to' np.float64', wtedy działają zarówno 'x * a' i' a * x [...] ', ale żaden z' a * x', 'a + x',' a/x' lub 'a - x' do. Trudno jest zrozumieć, dlaczego, jeśli metoda '__mul__' z' a' nie może sobie z tym poradzić, '__rmul__' z' x' nie jest wywoływane, ponieważ wydaje się, że wie jak sobie z tym poradzić ... – Jaime
Dziękuję bardzo za sprawdzam to dla mnie. Postaram się zgłosić to jako problem w numpy. Czy sądzisz, że może istnieć sposób obejścia tego problemu? – Jason
Jeśli zastąpisz 'x' z' x [...] 'to działa, ale to jest paskudny hack ... – Jaime