python numpy Broadcasting

对于python的numpy模块产生的两个array,如果它们的维度相同,则对两个array的加减乘除其实就是对对应位置的元素进行加减乘除。

当两个array的维度不相同,可以使用Broadcasting功能对其进行加减乘除,需满足:其中一个array的维度为1

i.e.
Image (3d array): 256 x 256 x 3
Scale (1d array): 3
Result (3d array): 256 x 256 x 3

A (4d array): 8 x 1 x 6 x 1
B (3d array): 7 x 1 x 5
Result (4d array): 8 x 7 x 6 x 5

Addition: 使用broadcasting在很多时候能够提高运行效率,因为向量化的操作能够提高速度(Broadcasting provides a means of vectorizing array operations so that looping occurs in C instead of Python. It does this without making needless copies of data and usually leads to efficient algorithm implementations)。

# 代码段1
a = np.array([1.0, 2.0, 3.0])
b = np.array([2.0, 2.0, 2.0])
a * b
# result 1
# array([ 2.,  4.,  6.])

# 代码段2
a = np.array([1.0, 2.0, 3.0])
b = 2.0
a * b
# result 2
# array([ 2.,  4.,  6.])

上述两段代码得到的结论一样,但代码段2的效率更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值