我有一个numpy布尔2D数组,它表示一个灰度图像,基本上是一个未填充的形状(三角形、正方形、圆形),由True
表示白色像素,而False
表示黑色像素。我想添加一个黑填充修改为黑色像素的白色像素。你知道吗
array([[True, True, True, False, False, False, False, False, True, True, True],
[True, True, True, False, True, True, True, False, True, True, True],
[True, True, True, False, True, True, True, False, True, True, True],
[True, True, True, False, True, True, True, False, True, True, True],
[True, True, True, False, False, False, False, False, True, True, True]])
(这个数组中间一个正方形中的9True
值应该变成False
。)
有没有一种简单/快速的numpy切片方法?我可以随时修改所有的True
,只要有一个False
后跟一个True
,直到下一个False
的实例?你知道吗
根据您的逻辑,可以将第一个False和最后一个False之间的所有值替换为False:
这里有一个想法,很容易实现,应该执行得相当快。你知道吗
我将使用0和1,这样看起来更清晰一些。你知道吗
以下是起始阵列:
使用
np.logical_and.accumulate
从左到右累加,从左到右翻转,再次执行相同操作,向后翻转,然后将两个数组中的“或”组合在一起:(省略
.astype(int)
以保留布尔数组,而不是0和1。)这是一个三角形:
相关问题 更多 >
编程相关推荐