对 NumPy.dot() 的理解

2018-05-16  本文已影响0人  蜘蛛的梦呓

【对 Numpy.dot() 的理解】

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

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

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

示例图如下:

解释一下矩阵的坐标(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]]

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

上一篇 下一篇

猜你喜欢

热点阅读