numpy中的dot()函数

一开始看到这个函数的时候,总是把它想成点积,因为dot是点的意思。。。

后来在经历了dot()和*完全搞混,犯下错误之后,才终于弄明白了。

dot()计算的是我们经常计算的矩阵乘法,设A(2 * 3), B(3 * 4), 那么dot(A, B)就表示两个矩阵相乘,得到的结果是一个2 * 4的矩阵。

而*,相当于matlab中的.*, 也就是真正的点积,即元素对应相乘。

两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:a·b=a1b1+a2b2+……+anbn

附上官方文档网址

numpy.dot(a, b, out=None)
计算两个数组的乘积。对于二维数组来说,dot()计算的结果就相当于矩阵乘法。对于一维数组,它计算的是两个向量的点积。 对于N维数组,它是a的最后一维和b的倒数第二维积的和:dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])

参数:
a : array_like
b : array_like
out : ndarray, optional,用来保存dot()的计算结果

Examples

>>>

>>> np.dot(3, 4)
12

Neither argument is complex-conjugated:
>>>

>>> np.dot([2j, 3j], [2j, 3j])
(-13+0j)

For 2-D arrays it is the matrix product:
>>>

>>> a = [[1, 0], [0, 1]]
>>> b = [[4, 1], [2, 2]]
>>> np.dot(a, b)
array([[4, 1],
       [2, 2]])

>>>

>>> a = np.arange(3*4*5*6).reshape((3,4,5,6))
>>> b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
>>> np.dot(a, b)[2,3,2,1,2,2]
499128
>>> sum(a[2,3,2,:] * b[1,2,:,2])
499128


今早起来看了知乎,会长在一个问题上的回答说:我们写工程代码确实不少时候就是查文档,调接口,但是其精髓应该是隐藏在这些接口后的设计哲学,这种东西光看文档和接口是看不出来的,得真正自己去挖掘,去动手写自己的代码,去认真读别人的源码。

源码:

装13失败,并没有公开源码
  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值