如何高效获取可广播Numpy数组广播后的维度形状?
获取Numpy数组广播后的形状
当然有更高效的方法,不用真的执行数组运算:
方法一:使用
np.broadcast_shapes(Numpy 1.20及以上版本)
这是Numpy专门提供的工具函数,直接传入各个数组的形状元组就能得到广播后的形状,完全不需要操作数组本身,效率拉满:import numpy as np broadcasted_shape = np.broadcast_shapes(a.shape, b.shape, c.shape)方法二:利用
np.broadcast对象
如果你的Numpy版本比较旧,也可以创建一个广播对象,它只会处理广播规则、计算最终形状,不会生成实际的数组:broadcast_obj = np.broadcast(a, b, c) broadcasted_shape = broadcast_obj.shape
这两种方法都比(a+b+c).shape高效得多,后者会先创建临时数组再取形状,当数组规模较大时性能差距会特别明显。
内容的提问来源于stack exchange,提问作者Quercus Robur
相关产品推荐
相关产品推荐

