numpy乘法运算

reference

Numpy数据的操作 *,dot,multiply的区别

总结

这里只谈论ndarray的数据类型的计算,如果是matrix的数据类型,那么mat自带一些运算

dot(a,b)

进行矩阵乘法

没想到吧,这个看起来这么像内积,实际上是矩阵乘法,而multiply那么像矩阵乘法,实际上是逐元素相乘

  • a或b是 0-D (标量), 等价于 multiply,推荐使用 numpy.multiply(a, b)或 a * b
  • 如果 a和 b是 2-D arrays, 作用是矩阵的乘积, a和 b的维数要满足矩阵乘积维数要求,此时推荐使用 matmul或 a @ b。
  • a是 N-D array 且 b是 1-D array, 作用是在a和 b的最后一个轴上进行sum product运算。
    >>> a = array([[[ 1.,  2.,  3.,  4.],
              [ 5.,  6.,  7.,  8.],
              [ 9., 10., 11., 12.]],
    
             [[ 1.,  2.,  3.,  4.],
              [ 5.,  6.,  7.,  8.],
              [ 9., 10., 11., 12.]]])
    >>> b = np.array([1,2,3,4])
    >>>np.dot(a, b)
    
    array([[ 30.,  70., 110.],
           [ 30.,  70., 110.]])
    

    可以看到,其他的情况下,都有更推荐的API,但是在最后这种情况下,用dot( )是最为合适的

multiply

numpy.multiply(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'multiply'>
"""
Returns:
	y : ndarray, x1 和 x2的element-wise乘积,保证x1和x2有相同的维数,或者进行broadcast之后两者有相同的维数
"""

所以第二个参数如果维度不够,会自动进行broadcast~

>>> np.multiply(2.0, 4.0)
8.0

>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> np.multiply(x1, x2)
array([[  0.,   1.,   4.],
       [  0.,   4.,  10.],
       [  0.,   7.,  16.]])

*运算

  • 对于ndarray, * 作用的是进行element-wise乘积,必要时需要broadcast,作用同np.multipy
  • 对于matrix另有他用,这里我们先不讨论
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值