Почему список в Python может быть вычтен из типа np.float64, а тип int не может быть использован? - PullRequest
0 голосов
/ 29 апреля 2019

Проблема со списком операций
Я не знаю, как это работает, Может кто-нибудь объяснить, почему?

import numpy as np

l=[]
for i in range(10):
  l.append(i+1)
  m=l - np.float64(1)    #This works fine
  n=l-2                # This will give an error

1 Ответ

0 голосов
/ 29 апреля 2019

Это относится к numpy, а не к вычитаемому элементу, являющемуся float против int. Вычитание np.int64(1) тоже отлично работает.

Что касается того, почему это работает. Результатом вычитания является массив numpy. Я думаю, что обычный Python list сначала приводится к массиву numpy, а затем вычитается numpy int или float.

Однако вы не можете вычесть и int или float из обычного списка.

import numpy as np

lst = [1, 2, 3]
np_list = np.array(lst)

# # fails, since you cannot subtract int or float from list
lst - 1
lst - 1.0

# works fine, since element(s) is (are) cast to numpy element
np_list - 1
np_list - 1.0
lst - np.int64(1)
lst - np.float64(1)
np_list - np.int64(1)
np_list - np.float64(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...