切片二维 NumPy 数组,删除第一行和最后一行和列

Slicing 2D NumPy Array, removing first and last row and column

我有一个 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)