Это относится к 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)