Ошибка в python3 np.exp (matrix1 * matrix2) - «l oop ufun c не поддерживает аргумент 0 типа float, у которого нет вызываемого метода exp» - PullRequest
1 голос
/ 17 июня 2020

У меня есть функция, в которой мне нужно выполнить np.exp(matrix1 @ matrix2), но я получаю сообщение об ошибке: loop of ufunc does not support argument 0 of type float which has no callable exp method

  • matrix1 - это матрица 210 на 4 из float значений
  • matrix2 - это 4 на 1 из float значений
  • matrix1 @ matrix2 это 210 на 1 из float значений
  • type(matrix1 @ matrix) отчетов numpy.ndarray

numpy.exp() ожидает аргумент array_like, поэтому я не понимаю, почему это приколы.

Сведения об ошибке:

newval = np.exp(matrix1 @ matrix2)

AttributeError                            Traceback (most recent call last)
AttributeError: 'float' object has no attribute 'exp'

The above exception was the direct cause of the following exception:

TypeError                                 Traceback (most recent call last)
<ipython-input-563-7924faaa390b> in <module>
----> 1 np.exp(matrix1 @ matrix2)

TypeError: loop of ufunc does not support argument 0 of type float which has no callable exp method
​

1 Ответ

0 голосов
/ 17 июня 2020

exp работает с массивом с плавающей запятой:

In [186]: arr = np.array([1.,2.,3.])                                                                            
In [187]: np.exp(arr)                                                                                           
Out[187]: array([ 2.71828183,  7.3890561 , 20.08553692])

, но не, если массив dtype равен object:

In [188]: np.exp(arr.astype(object))                                                                            
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
AttributeError: 'float' object has no attribute 'exp'

The above exception was the direct cause of the following exception:

TypeError                                 Traceback (most recent call last)
<ipython-input-188-b80d2a0372d5> in <module>
----> 1 np.exp(arr.astype(object))

TypeError: loop of ufunc does not support argument 0 of type float which has no callable exp method

Ваш массив может иметь смешанные объекты - поплавки , int, списки, кто знает что.

===

Почему matrix1 @ matrix2 object dtype? Что такое matrix1 и matrix2? @ обычно является операцией numeri c, хотя недавно она была расширена для работы с объектами dtypes. Но это более медленный расчет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...