ufunc()函数的广播机制

本文深入解析了数组间执行算术运算的广播机制,阐述了不同形状数组进行运算的四个基本原则,并通过具体实例展示了如何使所有输入数组向最长的shape看齐,以实现高效计算。

广播是指不同形状的数组之间执行算数运算的方式,需要遵循4个原则:

1.让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐

2.输入数组的shape是输入数组shape的各个轴上的最大值

3.如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。

4.当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。

import numpy as np

# 创建数组
arr1 = np.array([[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]])
print('arr1:', arr1)
print('arr1形状:', arr1.shape)

arr2 = np.array([[1, 2, 3, 4]])
print('arr2:', arr2)
print('arr2形状:', arr2.shape)

arr3 = np.array([[1, 2, 3, 4], [0, 1, 2, 3]])
print('arr3:', arr3)
print('arr3形状:', arr3.shape)

# 执行上述两个数组相加
arr_new = arr1 + arr2
print('arr_new:', arr_new)

# 不满足广播机制
arr_new = arr1 + arr3
print('arr_new:', arr_new)

"""
让所有的shape向最长的看齐
arr1 (2,4,5)
arr2 (4,1) 补齐 (1,4,1)
arr3 (5,)  补齐 (1,5,1)
"""

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值