【发布时间】:2021-07-06 21:14:52
【问题描述】:
我有以下数组
array = np.array(\
[[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 255],
[ 0, 0, 0, 0, 0, 0, 0, 255, 255, 255],
[ 0, 0, 0, 0, 0, 255, 255, 255, 255, 255],
[ 0, 0, 0, 255, 255, 255, 255, 255, 255, 255],
[ 0, 255, 255, 255, 255, 255, 255, 255, 255, 255]])
我想得到一个布尔数组,只要上面和下一个元素不同(或者如果它位于数组的边缘),其值为 True:
[[ True True True True True True True True True False]
[ True False False False False True True False False False]
[ True False False True True False False False False False]
[ True True True False False False False False False False]
[ True False False False False False False False False False]]
到目前为止我所尝试的: 如果下一个邻居不同,我会查找每一行:
row = np.array([np.append(row[:-1] != row[1:],False) for row in mapped_image])
对于每一列:
column = []
rowAbove = mapped_image[0]
for row in mapped_image[1:]:
column .append(rowAbove != row)
rowAbove = row
column .append(["True"]*len(row))
...但是我很难将它们合并在一起并添加边缘。我可以尝试什么来解决这个问题?
【问题讨论】:
-
Wrt “只要上面和下一个元素不同,该值就是 True” - 彼此不同还是与元素不同?在结果的最后一行中,第一个值有
True,当它上面的值是0并且它旁边(右侧)是255。然后最后一行的第三个元素是False,但上面也有0它和255之后。它们都应该是 True 或 False。并且这些位置的原始值是 0 和 255。因此,它们应该具有相同的结果。顺便说一句,顶行和最右边的列显示为 all True。为什么右上角和最右边一列都是False?