在机器学习中遇到的一点有关python的小问题
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([1,2,3])
print a*b
print a+b
print b*a
print b+a
c=np.dot(a, b)
print c
print np.shape(c)
d = np.dot(b, a)
print d
print np.shape(d)
# [[ 2 4 6]
# [ 5 7 9]
# [ 8 10 12]]
# [[ 1 4 9]
# [ 4 10 18]
# [ 7 16 27]]
# [[ 2 4 6]
# [ 5 7 9]
# [ 8 10 12]]
# [14 32 50]
# (3,)
# [30 36 42]
# (3,)
# 由此可见,b为行向量还是列向量时,是看具体用的时候在矩阵左边还是右边,会自动变换 # numpy.dot()是矩阵乘法 # 而有关‘*’,‘+’ # 如果两个数组大小一样,按照对应元素相乘或相加 # 如果像a*b,或a+b,则a中的每一列的每个数与b中的每一列的每个数都相乘,即扩大a中每一列的倍数(相加时也是一样) # b*a ,这个结果与a*b是一样的