我通过以下代码将geotiff LiDAR高程曲面转换为numpy数组:example_array = np.array(geotiff_surface)
该数组由数百个值乘数百个值组成,但可以简化为以下示例:
example_array = [[ 0, 0, 0, 1, 1, 0, 0, 0]
[ 0, 0, 2, 2, 2, 2, 0, 0]
[ 0, 3, 3, 3, 3, 0, 0, 0]
[ 4, 4, 4, 4, 4, 4, 0, 0]
[ 0, 0, 0, 5, 5, 0, 0, 0]]
在其他人的帮助下,我试图用下面的代码对2D数组进行切片,以将特定位置的值增加1000:
sub_array = example_array[1:-1, 1:-1]
sub_array = [sub_array > 1] += 1000
希望得到下面正确的示例数组:
correct_example_array = [[ 0, 0, 0, 1, 1, 0, 0, 0]
[ 0, 0, 2, 1002, 1002, 2, 0, 0]
[ 0, 3, 1003, 1003, 3, 0, 0, 0]
[ 4, 1004, 1004, 1004, 1004, 4, 0, 0]
[ 0, 0, 0, 5, 5, 0, 0, 0]]
而实际上我的当前代码给我的是这个数组:
incorrect_example_array = [[ 0, 0, 0, 1, 1, 0, 0, 0]
[ 0, 0, 1002, 1002, 1002, 1002, 0, 0]
[ 0, 1003, 1003, 1003, 1003, 0, 0, 0]
[ 4, 1004, 1004, 1004, 1004, 1004, 0, 0]
[ 0, 0, 0, 5, 5, 0, 0, 0]]
有没有一种方法可以让切片理解跳过列表中的零,并在大于1的值中开始切片[1:-1]?
1条答案
按热度按时间yk9xbfzb1#
这里有一个方法来做到这一点(可能不是很好):