gpt4 book ai didi

python - 广播到 Numpy 数组的 View 中

转载 作者:行者123 更新时间:2023-12-01 04:50:15 25 4
gpt4 key购买 nike

我正在通过 numpy 处理图像。我想将图像的一部分设置为其平均颜色。我可以做到这一点,但是当我想使用原始 View 来执行此操作时,我必须重新索引数组。换句话说,我想使用第四行代码,但我坚持使用第三行。

我读过一些关于 as_strided 函数的文章,但它让我感到困惑,我希望可能有一个更简单的解决方案。那么有没有办法稍微修改最后一行代码来完成我想要的事情?

box = im[x-dx:x+dx, y-dy:y+dy, :]
avg = block(box) #returns a 1D numpy array with 3 values
im[x-dx:x+dx, y-dy:y+dy, :] = avg[None,None,:] #sets box to average color
#box = avg[None,None,:] #does not affect original array

最佳答案

box = blah

只是重新分配box变量。 box 变量之前引用的数组不受影响。这不是你想要的。

box[:] = blah

是切片赋值。它修改数组的内容。这就是你想要的。

请注意,切片赋值取决于语句的语法形式。事实上,box 是由 box = im[stuff] 分配的,这一事实不会对 box 切片分配进行进一步分配。这与您执行的操作类似

l = [1, 2, 3]
b = l[2]
b = 0

b的赋值不会影响l

关于python - 广播到 Numpy 数组的 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28621131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com