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

时间:2019-04-29 12:52:53

标签: python-3.x list numpy

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

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 :(得分:0)

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