为什么 python 中的列表可以从 np.float64 类型中减去,而不能使用 int 类型



列表操作问题
我不知道这是如何工作的,有人可以解释为什么吗?

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
这与

numpy有关,而不是减去的元素是floatint。减去np.int64(1)也可以正常工作。

至于它为什么有效。减法的结果是一个numpy数组。我认为普通的 Python list首先被强制转换为numpy数组,然后减去numpy intfloat

但是,您不能从普通列表中减去和intfloat

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)

最新更新