我想得到一个np.数组. 你知道吗
数组看起来像:
x = np.array([ [1, 2, 3, 4 ],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16] ])
我得到的是:
i = 2
j = 2
n = x[i,j-1], x[i,j], x[i,j+1], x[i-1,j], x[i+1,j], x[i-1,j-1], x[i+1,j+1], x[i+1,j-1], x[i-1,j+1]
这是回报(我想要的)
(10, 11, 12, 7, 15, 6, 16, 14, 8)
但也有一些bug,比如当我需要的neightbour值
i = 3
j = 3
这就产生了:
Exception has occurred: IndexError
index 4 is out of bounds for axis 1 with size 4
另一个解决方案是:
def find_neighbors(m, i, j, dist=1):
return [row[max(0, j-dist):j+dist+1] for row in m[max(0,-1):i+dist+1]]
以及
n = find_neighbors(x, i, j)
这使我有许多邻舍,但我设立的时候,并没有把所有的邻舍都给我
i = 0
j = 0
因为它只会给我:
[array([1, 2]), array([5, 6])]
有人能解决这个问题吗?你知道吗
谢谢你!你知道吗
我从一个伙伴那里得到了以下解决方案:
新阵列:
返回相邻值的代码:
这让我想起:
这就是我所需要的,但我仍然对像Abdur那样的解决方案感兴趣
输出:
[1, 2, 5, 6]
输出:
[11, 12, 15, 16]
输出:
[6, 7, 8, 10, 11, 12, 14, 15, 16]
这将涵盖所有的边缘情况。你知道吗
对于负索引,可以利用python索引环绕的优势。你知道吗
这要求
i
和j
是非负的,并且小于x
的形状。你知道吗如果不能保证:
示例:
相关问题 更多 >
编程相关推荐