切片2D NumPy数组,删除第一行和最后一行及列



我有一个2D Numpy瓷砖对象数组,用作贴图。外圈全部为"环形";墙";值以形成闭合边界。我想制作一个内部值的副本,以便在不接触外部行和列的情况下进行迭代。我正在尝试:

inner_values = map.tiles[1:-1][1:-1]

以剪切顶部和底部的行以及左侧和右侧的列。我的地图是100*70,当我想要(98,68(时,它会不断给我一个形状数组(96,70(。如何正确使用切片来获取内部值?谢谢

你就在那里。。。你可以把所有的索引都放在括号里,得到你想要的:

import numpy as np
a = np.ones([5, 5])
print(a)
# [[1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1.]]

a[1:-1, 1:-1] = 0
print(a)
# [[1. 1. 1. 1. 1.]
#  [1. 0. 0. 0. 1.]
#  [1. 0. 0. 0. 1.]
#  [1. 0. 0. 0. 1.]
#  [1. 1. 1. 1. 1.]]

或者根据您的尺寸:

a = np.ones([100,70])
a[1:-1, 1:-1].shape
# (98, 68)

最新更新