我有一个numpy数组ys_big_seg,它的形状如下:(146, 128, 128).它包含像素掩码,其值可以是0 or 1.如果像素属于给定类别,则为1,否则为0.我必须将其zoom 到binary mask.所以我想遍历(128,128)矩阵,并将其拆分为(8,8)矩阵,然后基于较小的矩阵值(如果每个元素为0,则为0,如果每个元素为1,则为1,如果存在混合值,则随机为0或1)用给定值替换这些较小的矩阵,以将(128,128)矩阵减少到(16, 16).

我如何解决这个问题?

推荐答案

我想这正是你想要的:

>>> x.shape
(146, 128, 128)

>>> mask = x.reshape(-1, 16, 16, 8, 8).sum(axis=(3, 4)) >= 32

>>> mask.shape
(146, 16, 16)

如果总和为>;=32(即,一半或更多的值为1),因此它不是quite个随机 Select 的值.

显然,0的总和(8x8块中的所有元素均为0)将"不符合"该标准,且为0,64的总和(8x8块中的所有元素均为1)将"通过"并最终为1.如果矩阵稀疏得多,则可以将阈值从32降低到32.

由于将此数组用作掩码,因此可以将1和0保留为布尔对应项.但是如果您计划将掩码用作二进制数组,那么可以轻松地添加.astype(int).

Python相关问答推荐

Matplotlib中的字体权重

使用嵌套对象字段的Qdrant过滤

Scipy差分进化:如何传递矩阵作为参数进行优化?

对数据帧进行分组,并按组间等概率抽样n行

将像素信息写入文件并读取该文件

VSCode Pylance假阳性(?)对ImportError的react

如何在Polars中将列表中的新列添加到现有的数据帧中?

#将多条一维曲线计算成其二维数组(图像)表示

颂歌中的线性插值法(盖柯)

有理由将基于Django职业的观点个人化吗?

如何在函数签名中输入数据类字段

在多索引的Pandas数据帧中,有可能有一个值引用更高级别索引的列吗?

从语法生成后出现Antlr4 Python运行时错误

如何在python中为列表中的每个项目分配来自另一个列表的相等数量的项目

从数据帧中的字符串中剥离除字母数字字符以外的所有字符

Pandas 中的每行布尔运算

生成错误结果的DataFrame.groupby.ank?

如何分解在某些行中为空,但在其他行中填充的pandas框架

窗口必须是整数0或更大,&q;与';30D';样式滚动计算有关

卡方检验中的不同结果