【问题标题】:Slicing 2D NumPy Array, removing first and last row and column切片 2D NumPy 数组,删除第一行和最后一行和列
【发布时间】:2022-01-04 03:00:04
【问题描述】:

我有一个 2D Numpy 瓦片对象数组,用作地图。外环是所有“墙”值以形成封闭边界。我想复制内部值以进行迭代而不触及外部行和列。我正在尝试:

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

切断上下行和左右列。我的地图是 100*70,当我想要 (98, 68) 时,这会一直给我一个形状 (96, 70) 的数组。如何正确使用切片来获取我的内在价值?谢谢!

【问题讨论】:

  • map.tiles[1:-1] 的结果应用第二个索引。网络切片为[2:-2]。不是你想要的。
  • 附带说明,不要使用map 作为变量名。这是一个(非常有用的)python 内置函数。

标签: python arrays numpy slice


【解决方案1】:

你就在那里......你可以将所有索引放在括号内以获得你想要的:

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)

【讨论】:

    猜你喜欢
    • 2015-05-24
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多