欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Numpy中的dot运算

程序员文章站 2022-04-18 09:30:04
1.数组和数组之间的运算[In] import numpy as np a = np.array([1,2,3]) a[Out] array([1, 2, 3]) #a为数组。[In] b = np.array([4,5,6]) np.dot(a,b)[Out] 32 #结果为标量322.数组和矩阵之间的运算[In] m = np.array([[1,2,3],[2,3,1],[0,1,-1]]) m[Out] array([[ 1, 2, 3],...

1.数组和数组之间的运算

[In] import numpy as np
	 a = np.array([1,2,3])
	 a
[Out] array([1, 2, 3])  #a为数组。
[In] b = np.array([4,5,6])
	 np.dot(a,b)
[Out] 32   #结果为标量32	

2.数组和矩阵之间的运算

[In] m = np.array([[1,2,3],[2,3,1],[0,1,-1]])
	 m
[Out] array([[ 1,  2,  3],
       		 [ 2,  3,  1],
      		 [ 0,  1, -1]])	 #m为矩阵。
[In] np.dot(a,m)    #利用a数组对m矩阵的行向量进行线性组合。
[Out] array([ 5, 11,  2]) #但是得到的是一个数组,而非一个行向量。
[In] np.dot(m,a)    #利用a数组对m矩阵的列向量进行线性组合。
[Out] array([14, 11, -1]) #但是得到的是一个数组,而非一个行向量。	

3.数组和向量之间的运算

[In] v_r = a.reshape(1,-1) #将a数组转化为行向量
	 v_r
[Out] array([[1, 2, 3]])
[In] v_r.shape	
[Out] (1, 3)
[In] np.dot(v_r,a)  #利用a数组对行向量v_r的列进行线性组合
[Out] array([14])   #结果得到一个数组
[In] np.dot(a,v_r)  #利用a数组对行向量v_r的行进行线性组合,但这样显然是错误的,因为a数组中有3个元素,但是v_r中却只有一行
[In] v_c = a.reshape(-1,1) #将a数组转化为列向量
[In] v_c
[Out] array([[1],
       	 	 [2],
       		 [3]])
[In] v_c.shape
[Out] (3, 1)
[In] np.dot(a,v_c)```#利用a数组对行向量v_c的行向量进行线性组合
[Out] array([14])
[In] np.dot(v_c,a)```#利用a数组对行向量v_c的列向量进行线性组合,但是v_c只有1列,故词句代码也会报错

从上述例子中可以看出,数组与矩阵(向量也是一个特殊的矩阵)相乘遵循左行右列的规则。数组在矩阵左边,便是对矩阵(向量)中的行向量进行线性组合;数组在矩阵右边,便是对矩阵(向量)中的列向量进行线性组合。若组合时行/列向量的个数与数组元素的个数不相等,则程序会报错。另外,数组与矩阵的dot运算,得到的结果是一个数组,而非一个向量。

4.矩阵与矩阵之间的运算

[In] m = np.array([[1,2,3],[2,3,1],[0,1,-1]])  #创建一矩阵
	 m
[Out] array([[ 1,  2,  3],
      	 	 [ 2,  3,  1],
       		 [ 0,  1, -1]])
[In] np.dot(v_r,m)
[Out] array([[ 5, 11,  2]])  #得到的是一个向量(矩阵),而非一个数组,这就是与矩阵和数组的dot之间的差别。
[In] np.dot(m,v_r)  #词条为错误语句,因为不满足矩阵相乘内标相同的规则。
[In] np.dot(m,v_c)
[Out] array([[14],
      	     [11],
      		 [-1]])
[In] np.dot(v_r,v_c)
[Out] array([[14]])
[In] np.dot(v_c,v_r)
[Out] array([[1, 2, 3],
       		 [2, 4, 6],
       		 [3, 6, 9]])

矩阵和矩阵之间的运算和线性代数中的是完全一样的,需要内标相同才能运算,最后得到的结果也是一个矩阵。

本文地址:https://blog.csdn.net/qq_38177190/article/details/107577144

相关标签: numpy python