【numpy中array、matrix关于 * 、@、dot、multiply、ravel的异同】

文章详细对比了numpy中array和matrix在使用*、@、dot、multiply和ravel时的不同。*对array表示对应位置相乘,对matrix表示矩阵乘法;@和dot对二维array和matrix执行矩阵乘法,对一维array计算内积;multiply在array和matrix上均执行对应位置相乘;ravel将array展开成一维,但matrix展开后仍保持二维结构。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

numpy中array、matrix关于 * 、@、dot、multiply、ravel的异同

" * "的区别

// 创建二维array和matrix
a=np.array([[1,2]])
b=np.array([[1],[1]])
a1=np.matrix(a)
b1=np.matrix(b)

a: [[1 2]]  a1: [[1 2]]

b: [[1]     b1: [[1]
    [1]]         [1]]
    
print(a*b)
[[1 2]
 [1 2]]
 
print(a1*b1)
[[3]]

// 创建一维array和matrix
c=np.array([1,1])
d=np.array([2,2])
c1=np.matrix(c)
d1=np.matrix(d)

c: [1 1]  c1:[[1 1]] 

d: [2 2]  d1:[[2 2]] 

print(c*d)
[2 2]

print(c1*d1)  报错,因为*对于matrix为矩阵相乘,c1、d1二矩阵无法做矩阵乘法

小结:* 对于array为对应位置相乘,对于matrix为矩阵乘法

"@"的区别

// 创建二维array和matrix
a=np.array([[1,2]])
b=np.array([[1],[1]])
a1=np.matrix(a)
b1=np.matrix(b)

a: [[1 2]]  a1: [[1 2]]

b: [[1]     b1: [[1]
    [1]]         [1]]
    
print(a@b)
[[3]]
 
print(a1@b1)
[[3]]

// 创建一维array和matrix
c=np.array([1,1])
d=np.array([2,2])
c1=np.matrix(c)
d1=np.matrix(d)

c: [1 1]  c1:[[1 1]] 

d: [2 2]  d1:[[2 2]] 
print(c@d)
4

print(c1@d1)  报错,因为@对于matrix为矩阵相乘,c1、d1二矩阵无法做矩阵乘法

小结:@ 对于二维array和matrix均为矩阵乘法,对于一维array为求内积

"dot"的区别

// 创建二维array和matrix
a=np.array([[1,2]])
b=np.array([[1],[1]])
a1=np.matrix(a)
b1=np.matrix(b)

a: [[1 2]]  a1: [[1 2]]

b: [[1]     b1: [[1]
    [1]]         [1]]
    
print(np.dot(a,b))
[[3]]
 
print(np.dot(a1,b1))
[[3]]

// 创建一维array和matrix
c=np.array([1,1])
d=np.array([2,2])
c1=np.matrix(c)
d1=np.matrix(d)

c: [1 1]  c1:[[1 1]] 

d: [2 2]  d1:[[2 2]]   

print(np.dot(c,d))
4

print(np.dot(c1,d1))报错,因为dot对于matrix为矩阵相乘,c1、d1二矩阵无法做矩阵乘法

小结:dot 对于二维array和matrix均为矩阵乘法,对于一维array为求内积

"multiply"的区别

// 创建二维array和matrix
a=np.array([[1,2]])
b=np.array([[1],[1]])
a1=np.matrix(a)
b1=np.matrix(b)

a: [[1 2]]  a1: [[1 2]]

b: [[1]     b1: [[1]
    [1]]         [1]]
    
print(np.multiply(a,b))
[[1 2]
 [1 2]]
 
print(np.multiply(a1,b1))
[[1 2]
 [1 2]]

// 创建一维array和matrix
c=np.array([1,1])
d=np.array([2,2])
c1=np.matrix(c)
d1=np.matrix(d)

c: [1 1]  c1:[[1 1]] 

d: [2 2]  d1:[[2 2]]   

print(np.multiply(c,d))
[2 2]

print(np.multiply(c1,d1))
[[2 2]]

小结:multiply 对于array和matrix均为对应位置相乘

"ravel"的区别

// 创建二维array和matrix
b=np.array([[1],[1]])
b1=np.matrix(b)

b: [[1]     b1: [[1]
    [1]]         [1]]
    
print(b.ravel())
[1 1]

print(b1.ravel())
[[1 1]]

小结:ravel对于array展开后为一维,matrix展开后仍为二维

总结

1.*对于array为对应位置相乘,对于matrix为矩阵乘法
2.@和dot运算相同, 对于二维array和matrix均为矩阵乘法,对于一维array为求内积
3.multiply 对于array和matrix均为对应位置相乘
4.ravel对于array展开后为一维,matrix展开后仍为二维

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白色玉米棒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值