原生的 Python 和带广播的 Numpy
利用 Python 原生的功能,创建一个二维的 list,变量名称为 x ,其 shape 为 (3,1)
现在我想把它扩展为 (3,4)的二维 list, 并且每列都为 [3, 1, 4],如下所示:
利用 list 的 [] * 4 便可扩展成上面的二维形式
同理,创建一个二维 list , 变量名称为 y, 其 shape 为 (1, 4)
然后,扩展为 (3,4) 的二维 list
好了,现在二维 list 变量 x, y, shape 变为一样了。
接下来,分别比较它们各自的对应元素,如果 x[i][j] < y[i][j] ,则选择 x[i][j] ,并加 1, 否则,选择 y[i][j], 并减 1,并返回一个对应维度的二维 list.
实现以上功能,还得至少需要以下 3 行代码,返回结果 result
综上,大概一共需要 7,8 行代码得到想要的结果
如果使用 Numpy 中的函数,可能只需要 1 行,
np.where 第一个参数,意义为判断条件,官方的解释如下,x , y 和 condition 需要是可广播的,并最终传播为某种 shape.
之所以,从文章开头到后面大部分篇幅,都在使用 Python 原生的功能实现与 Numpy 同样的效果,就是为了更好的说明 Numpy 的传播机制。
通过对比,或许更容易明白 Numpy 的传播机制。希望效果真如此吧!
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16765339.html