报错信息:”TypeError: unsupported operand type(s) for -: ‘numpy.ndarray’ and ‘int'”
这个错误通常发生在我们试图用一个整数去减去一个数组时。比如:
import numpy as np
a = np.array([1, 2, 3])
b = a - 1
运行上面的代码会抛出上面的TypeError异常。因为 b = a – 1,这条语句中的减法操作符 (-) 无法处理一个数组 a 和一个整数 1。
这是因为在 numpy 中,减法操作符 (-) 可以执行元素级别的减法操作,也就是将两个数组中的每个元素分别相减,但不能将数组作为一个整体减去一个数值。因此,正确的做法是将 1 转化为一个数组 [1],使得其可以与数组 a 互相匹配:
import numpy as np
a = np.array([1, 2, 3])
b = a - np.array([1])
在这个例子中,np.array([1]) 表示一个只有一个元素的数组,它和数组 a 同时进行了减法运算,返回的结果是一个新的数组 b,表示每个元素都减去 1 后的结果。
当然,如果我们减去的是一个与原数组形状相同的数组,那么也是没有问题的,例如:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1, 1, 1])
c = a - b
其中 c 的结果就是一个数组,它表示每个元素都减去相同的值后的结果。
因此,要解决这个问题,我们需要确保操作符左右两侧的数组具有相同的形状。如果需要减去一个单独的数值,需要将它转化为一个形状相同的数组。