【问题标题】:Iterate through 2d array looking at neighbours, except at boundaries遍历二维数组查看邻居,边界除外
【发布时间】:2018-07-03 21:42:29
【问题描述】:

我有这段代码,我试图在一个二维(numpy)数组中迭代 300,350。 我正在查看数组中的每个点 [i,j],然后查看它的两个邻居 [i+1, j+1] 等(取决于角度)。我正在查看角度 0、45、90 和 135 度。我的问题是索引第一个 i,j(角度 = 0 度),我将查看 i,j+1 和 i,j-1。 由于第一次迭代是在 j = 0 我得到一个索引错误,因为 j-1 = -1。我一直在尝试和寻找几个小时来解决这个问题。我的代码如下所示:

for i in range(trex.shape[0]): # ALL ROWS
    for j in range(trex.shape[1]): # ALL COLUMNS
        if shape[i,j] == 0:    # for 0 degree angles (shape is angles)
            if trex[i,j] > trex[i, j+1] and trex[i,j] > trex[i,j-1]: # conditions
                np.append(trex_other, trex[i,j])
            else:
                np.append(trex_other, 0)

我查看所有角度,但这只是我想要它做的一个例子。总而言之,我想在除 2d 数组周围的边界之外的所有点上遍历这个 2d 数组。 非常感谢任何帮助!

【问题讨论】:

  • 当你的索引工作时你想做什么?可能有一个更好的 numpy 解决方案可以矢量化您的函数。我还会添加标签numpy 而不是通用的arrays 标签来吸引合适的人。

标签: python arrays python-3.x loops iteration


【解决方案1】:

从 1 迭代到 length-1

for i in range(1, trex.shape[0]-1): # MOST ROWS
    for j in range(1, trex.shape[1]-1): # MOST COLUMNS
           ...

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 2017-10-04
    • 2010-10-13
    • 2018-06-10
    • 2016-09-04
    相关资源
    最近更新 更多