gpt4 book ai didi

python - Numpy 像 python 一样否定索引

转载 作者:行者123 更新时间:2023-11-28 20:37:04 24 4
gpt4 key购买 nike

我在这里需要一些帮助,不幸的是,我自己找不到解决方案。我在 numpy 中有一个数组(图像),我在其中索引了中心部分并可以创建一个图像,其中恰好将中心部分设置为黑色,如下所示:

11111
10001
10001
10001
11111

这可以通过类似 img[1:3, 1:3] = 0 的方式来实现。现在我也想要这样的补充:

00000
01110
01110
01110
00000

在 numpy 中是否有类似 img[~1:3,~1:3] = 0 的东西?

我试图找到相关的问题,但想不出更多的搜索词,而且似乎没有人遇到同样的问题。也许解决方案太简单了?我希望有一个非 hacky 解决方案。

提前致谢!

最佳答案

您可以使用行和列掩码,然后在两个掩码之间使用广播 OR-ing -

def assign_not_block(a, row_start, row_stop, col_start, col_stop, value=0):
m,n = a.shape
row_mask = np.ones(m,dtype=bool)
col_mask = np.ones(n,dtype=bool)
row_mask[row_start: row_stop] = 0
col_mask[col_start: col_stop] = 0
a[row_mask[:,None] | col_mask] = value
return a

sample 运行-

In [244]: a
Out[244]:
array([[5, 4, 5, 3, 5, 6, 7],
[0, 8, 7, 8, 7, 8, 2],
[4, 2, 6, 4, 2, 5, 2],
[2, 7, 1, 8, 2, 6, 5],
[5, 6, 6, 7, 0, 2, 1]])

In [245]: assign_not_block(a, row_start=1, row_stop=4, col_start=1, col_stop = 5)
Out[245]:
array([[0, 0, 0, 0, 0, 0, 0],
[0, 8, 7, 8, 7, 0, 0],
[0, 2, 6, 4, 2, 0, 0],
[0, 7, 1, 8, 2, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])

关于python - Numpy 像 python 一样否定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43891187/

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