Numpy基于元素的乘法和矩阵乘法的区别

最近因为学习python的需要,看了一些关于numpy(python的一个科学计算库)的基本知识(想学习numpy的可以浏览这篇博文深度学习与计算机视觉系列(1)_基础介绍,有助于你快速了解numpy基础语法),但看到numpy中array的乘法运算时,由于array的乘法符号表示与常见的线性代数中矩阵运算符号恰好相反,脑子总是绕不过弯。为了更好的记忆和使用array的乘法符号,现记录一下自己在查阅资料后关于numpy中array乘法运算符号的理解。


numpy的基本数据类型是array(数组),即一些类型相同的元素组成的类矩阵数据,用list或者嵌套的list可以初始化。它既有一维的(通过list初始化),也有多维的(通过嵌套的list初始化,有几层嵌套就是几维),例子见下:

import numpy as np
#一维Numpy数组
x=np.array([1,2,3])
#多维Numpy数组
x2=np.array([[1,2,3],[4,5,6]]) #x2.ndim=2,x2.shape=(2,3)
x3=np.array([[[1,2],[1,2]],[[3,4],[3,4]],[[5,6],[5,6]]]) #x3.ndim=3,x3.shape=(3,2,2)

此外,numpy也有矩阵数据类型matrix,是array的一个子类,这个类型跟线性代数中的矩阵含义一致,执行的是通常意义上的矩阵运算,不过官方文档建议使用array,因为array有更多的支持,进行元素乘法时也更方便。array和matrix两种类型的具体区别以及numpy和matlab的区别可以阅读这里

Numpy数组用x*ynp.multiply(x,y)表示基于元素的乘法,即两个array对应的元素相乘得到一个同种shape的array;用x.dot(y)np.dot(x,y)表示向量内积矩阵乘法。具体例子见下:

import numpy as np

x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])

# 元素对元素,点对点的乘积
# [[ 5 12]
#  [21 32]]
print x * y
print np.multiply(x, y)

v = np.array([9,10])
w = np.array([11, 12])

# 向量内积,得到 219
print v.dot(w)
print np.dot(v, w)

# 矩阵乘法(一维array既可以看作是行向量也可以看作是列向量,看它放的位置依据矩阵乘法规则可判断)
# v放在后面,做列向量,得到 [29 67]
print x.dot(v) 
print np.dot(x, v)
# v放在前面,做行向量,得到 [39 58]
print v.dot(x)
print np.dot(v,x)

# 矩阵乘法
# [[19 22]
#  [43 50]]
print x.dot(y)
print np.dot(x, y)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值