美文网首页
对 NumPy.dot() 的理解

对 NumPy.dot() 的理解

作者: 蜘蛛的梦呓 | 来源:发表于2018-05-16 21:53 被阅读0次

【对 Numpy.dot() 的理解】

我看了一下 「使用 Python 进行科学计算:NumPy入门 」 这个教程,其中 dot() 函数有点抽象,为了方便大家学习,我在这里简单的说下我对它的理解。

dot() 在一维,二维情况下,dot表现形式不同 。

  • 一维数组:则得到的是两数组的內积(即一一对应相乘)
    In : d = np.arange(0,9)
    Out: array([0, 1, 2, 3, 4, 5, 6, 7, 8])
    
    In : e = d[::-1]
    Out: array([8, 7, 6, 5, 4, 3, 2, 1, 0])
    
    #0+7+12+15+16+15+12+14+7+0=84
    In : np.dot(d,e) 
    Out: 84
    
  • 二维数组:则得到的是两数组的矩阵积
    In : a = np.arange(1,5).reshape(2,2)
    Out:
    array([[1, 2],
           [3, 4]])
    In : b = np.arange(5,9).reshape(2,2)
    
    Out:
    array([[5, 6],
                [7, 8]])
    
    
    In : np.dot(a,b)
    Out:
    array([[19, 22],
           [43, 50]])
    

结果为矩阵积,你就把结果想象成矩阵,而矩阵的点的坐标由行和列组成。

示例图如下:

解释一下矩阵的坐标(x,y)。

x:代表数组 a 的行号。

y:代表数组 b 的列号。

所以矩阵结果为:

(0,0):1*5+2*7=19

(0,1):1*6+2*8= 22

其他同理。

接下来重新看看这个例子:

import numpy as np

a = np.arange(25)
a = a.reshape((5, 5))

b = np.array([10, 62, 1, 14, 2, 56, 79, 2, 1, 45,
              4, 92, 5, 55, 63, 43, 35, 6, 53, 24,
              56, 3, 56, 44, 78])
b = b.reshape((5, 5))
print(a.dot(b))

>>> [[ 417  380  254  446  555]
  [1262 1735  604 1281 1615]
  [2107 3090  954 2116 2675]
  [2952 4445 1304 2951 3735]
  [3797 5800 1654 3786 4795]]

把这个二维数组矩阵积拆解成一维数组内积:

a = np.array([0, 1, 2, 3, 4])
b = np.array([10,56, 4, 43, 56])
print(a.dot(b))#417

a = np.array([0, 1, 2, 3, 4])
b = np.array([61,79, 92, 35, 3])
print(a.dot(b))#380
...
a:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
b:
[[10 62  1 14  2]
 [56 79  2  1 45]
 [ 4 92  5 55 63]
 [43 35  6 53 24]
 [56  3 56 44 78]]

我觉得这样写很浅显易懂了,如果还不会请私信我。

相关文章

  • 对 NumPy.dot() 的理解

    【对 Numpy.dot() 的理解】 我看了一下 「使用 Python 进行科学计算:NumPy入门 」 这个教...

  • numpy.dot

    numpy.dot numpy.dot(a, b, out=None) 两个数组的点积来源(http://docs...

  • numpy.dot()

    numpy.dot(a,b,out=None)一般用于计算向量的点积或者叫内积,但实际上其功能不止于此 当a和b都...

  • Numpy.dot()

    numpy.dot(a, b, out=None) 两个数组的点积如果是二维数组则相当于矩阵乘积一维数组则是内积 ...

  • Numpy中常用函数

    numpy.dot(a, b, out=None) docs.scipy.org/doc/numpy/refere...

  • 对理解的理解

    坚强的人不好做,再大的苦楚也不能说。 儿女情长为何愁,没有事业哪来的人生风流!任凭一路坎坷,也要一路高歌。...

  • 在RK3399上使用openCL和numpy对比

    点乘的python实现 python里的点乘非常简单,通过numpy自带的运算符号numpy.dot即可实现,以下...

  • numpy中dot()、outer()、multiply()以及

    Python中的几种乘法 一、numpy.dot 在numpy的官方教程中,dot()是比较复杂的一个,因为参数的...

  • 我对理解的理解

    时下,最值得珍惜的就是信任, 感恩别人对自己的一份信任,理解别人对自己的不理解,这就是我对理解的理解

  • 再谈对“理解”的理解

    再谈对“理解”的理解 1956年版《布卢姆目标分类学》里奖认知的维度分为:记忆、理解、分析、应用、评价和创造。 安...

网友评论

      本文标题:对 NumPy.dot() 的理解

      本文链接:https://www.haomeiwen.com/subject/javmdftx.html