numpy库中ndarray的shape为(m,1)和(m,)是不同的
例如:
import numpy as np
a = np.array([1,2,3])
b = np.array([[1],[2],[3])
print(a.shape, b.shape)
#输出为((3,),(3,1))
c = a - b
#c为[[ 0 1 2]
# [-1 0 1]
# [-2 -1 0]]
在a-b的运算中,numpy运算是根据最里层进行的,而b最里层是一个元素,a最里层是3个元素,所以b会被扩展为内层为3个元素的数组然后进行运算,最终结果并不是我们想要的shape为(3,1)的数组,而是shape为(3,3)的数组
解决方法:对a进行reshape操作然后再进行运算
a= a.reshape(3,1)
c = a-b
#c为[[0]
# [0]
# [0]]