давний читатель, начинающий писатель.
Я искал в Google и переполнении стека, но не смог найти общий ответ на этот вопрос.
Я получаю сообщение об ошибке «неподдерживаемый тип операнда для *: 'numpy.ndarray' и 'numpy.float64'» в python 2.7.3 с использованием numpy 1.6.2.
Ошибка возникает из-за умножения массива numpy и numpy float, но это происходит не каждый раз.
Например:
x = np.tan(1) # numpy.float64
y = np.array([0,1,2,3]) # numpy.ndarray
np.multiply(x,y) # works no problem
Or
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
Оба работают
Теперь о проблемных детях:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),-27)**40)),
np.tan(np.abs(np.multiply(-31,41))))
или, с x, определенным, как указано выше:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)),x)
оба выдают ошибку: NotImplemented
Я знаю, что случайные функции и числа кажутся странными, но концептуально это все равно должно работать, так как это работало, когда обе были установлены на переменные по отдельности.
Почему это происходит? Как я могу исправить это в общем смысле?
Большое спасибо! Джейсон
a
равноnp.ndarray
, аx
равноnp.float64
, то работают иx * a
, иa * x[...]
, но ни один изa * x
,a + x
,a / x
илиa - x
не работает. Трудно понять, почему, если метод__mul__
изa
не может с этим справиться,__rmul__
изx
не вызывается, так как он, кажется, знает, как обращаться с этим случаем... - person Jaime   schedule 19.01.2013x
наx[...]
, это сработает, но это неприятный хак... - person Jaime   schedule 19.01.2013(-27.)**47
должен решить вашу проблему... Вы можете использовать арифметику произвольной точности, но в numpy нет поддержки, см. этот ответ - person Stefano M   schedule 19.01.2013