如何设置二维numpy数组的值?将RGBA像素数组全置0的Pythonic方法
最Pythonic的Numpy数组全置0方法
嘿,针对你这个三维RGBA数组全置0的需求,numpy提供了几种非常简洁且符合Python风格的实现方式,完全不用写繁琐的循环,效率还超高:
原地修改数组(推荐,无额外内存开销)
直接利用numpy的切片赋值,一行代码搞定:arr[:] = 0这里的
arr[:]代表对整个数组的视图进行操作,赋值0会把数组里所有维度的元素(包括每个RGBA子数组的四个值)全部设为0,原地修改原数组,没有额外内存占用,是最直接高效的方式。另外还有一个等价的原地操作方法,看你个人习惯选择:
arr.fill(0)fill()方法会将数组的所有元素填充为指定值,效果和切片赋值完全一致。创建新的全0数组(保留原数组)
如果你不想修改原数组,而是需要一个和原数组形状、数据类型完全一致的全0数组,可以用zeros_like:import numpy as np new_arr = np.zeros_like(arr)这个方法会自动匹配原数组的三维结构和每个元素的dtype,生成的新数组所有元素都是0,非常省心。
为什么说这些方法是Pythonic的?因为Python的核心理念之一是用简洁、高效的内置工具代替重复的手动操作,numpy的这些向量化操作都是底层优化过的,比手动写嵌套循环遍历每个RGBA元素快得多,代码也更易读维护。
内容的提问来源于stack exchange,提问作者Infra Red Spectrum
相关产品推荐
相关产品推荐

