Numpy--数组的广播机制

数组广播机制:

数组与数的计算:
在Python列表中,想要对列表中所有的元素都加一个数,要么采用map函数,要么循环整个列表进行操作。但是NumPy中的数组可以直接在数组上进行操作。示例代码如下:

import numpy as np
a1 = np.random.random((3,4))
print(a1)

[[0.77076238 0.81937941 0.53652189 0.0278606 ]
[0.8152435 0.14667221 0.09707774 0.94591125]
[0.18488479 0.83096348 0.8637823 0.65813411]]

#如果想要在a1数组上所有元素都乘以10,那么可以通过以下来实现
a2 = a1*10
print(a2)

[[7.70762385 8.1937941 5.36521889 0.27860595]
[8.15243497 1.46672212 0.97077745 9.45911254]
[1.84884789 8.30963484 8.637823 6.58134107]]

#也可以使用round让所有的元素只保留2位小数
a3 = a2.round(2)
a3

[[7.71 8.19 5.37 0.28]
[8.15 1.47 0.97 9.46]
[1.85 8.31 8.64 6.58]]
*以上例子是相乘,其实相加、相减、相除也都是类似的。
*
结构相同的数组之间的运算:
在这里插入图片描述
形状不同不能运算,不能使用广播机制
在这里插入图片描述

当行数相同其中一个数组列数为1或者列数相同行数为1时可以使用广播机制

在这里插入图片描述
如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为他们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。。看以下案例分析:

shape为(3,8,2)的数组能和(8,3)的数组进行运算吗?
分析:不能,因为按照广播原则,从后面往前面数,(3,8,2)和(8,3)中的2和3不相等,所以不能进行运算。

shape为(3,8,2)的数组能和(8,1)的数组进行运算吗?
分析:能,因为按照广播原则,从后面往前面数,(3,8,2)和(8,1)中的2和1虽然不相等,但是因为有一方的长度为1,所以能参与运算。

shape为(3,1,8)的数组能和(8,1)的数组进行运算吗?
分析:能,因为按照广播原则,从后面往前面数,(3,1,4)和(8,1)中的4和1虽然不相等且1和8不相等,但是因为这两项中有一方的长度为1,所以能参与运算。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值