python中矩阵与数组相乘的问题

np.dot(数组,矩阵)和np.dot(矩阵,数组)等矩阵与数组相乘的问题

1、 np.dot(数组,矩阵)

import numpy as np
A = np.array([6,7,8])
B = np.array([[1,2], [3, 4], [5,6]])
print(A.shape)
print(B.shape)
print(np.dot(A,B).shape)
print(np.dot(A,B))

结果为:
在这里插入图片描述
小结:A为3个元素的数组(注意不是矩阵!),且元素个数为3
B为3x2矩阵,np.dot(A,B)得到的为一个元素个数为2的数组。

2、 np.dot(矩阵,数组):

import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
B = np.array([7, 8])
print(A.shape, B.shape)
print(np.dot(A, B).shape)
print(np.dot(A, B))

结果为:
在这里插入图片描述
小结:A为3x2矩阵,B为2个元素的数组,np.dot(A,B)得到的为一个元素个数为3的数组。

结论:

  • 在python中,矩阵与数组采用np.dot()计算时,所得结果均为一个数组
  • 数组在前时,可按照将数组看成1行n列的矩阵,与矩阵相乘,可得计算结果。但需注意计算结果依然只是数组,及其shape为(k,)形式,而不是(1,k);
  • 数组在后时,将矩阵的行与数组分别进行数量积相乘,所得结果组成的向量即为所得结果。即1x7+2x8=23,3x7+4x8=53, 5x7+6x8=83,组成数组[23,53,83]。
  • [23,53,83]是一个数组,它的shape为(3,)
  • [ [23,53,83] ]是一个矩阵,它的shape是(1,3)
  • 只有[ [23],[53],[83] ]才是一个列向量

在python中,数组和矩阵相乘与我们在线性代数中将向量看成一个列向量的思路是非常不同的,在python中数组的储存是按行存储的(在C语言,matlab中也是按行存储)。 根据吴恩达老师的建议,他在搭建神经网络时,一般不用数组,而是把数组通过reshape()函数转化为矩阵,以减少出错的可能性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值