如果我做
a = [1, 2, 7]
a - a[-1]
我明白了TypeError: unsupported operand type(s) for -: 'list' and 'int'
但是,我有一个由 组成的列表b,np.float64并且以下代码有效:
type(b)
# list
b - b[-1]
# array([ 281.04209146, 6.57013103, 0. ])
我认为这是因为中的数字b是np.float64,并且b在某种程度上被转换为np.array,然后广播发生了。但我仍然发现这种行为令人惊讶:由于列表中的所有元素不需要具有相同的类型,如果b[0]是字符串怎么办?中的操作数 b - b[-1]仍然是listand np.float64,那么为什么b - b[-1]不提高 aTypeError呢?
编辑:有人回答说是不同的list;np.array嗯,我知道。但是b没有np.array. 它的行为就像一个,但它的类型是list,就像我在代码片段中所说的那样。
这是一个最小的工作示例b:
b
# [1598.717274996219, 1324.245314569733, 1317.6751835362861]
type(b[0])
# numpy.float64