擅长:python、mysql、java
<p>试试这个:</p>
<pre><code>def neighbours(grid, i, j):
rows = np.array([-1, -1, -1, 0, 0, 1, 1, 1])
cols = np.array([-1, 0, 1, -1, 1, -1, 0, 1])
return grid[rows+i,cols+j]
</code></pre>
<p>编辑:<strong>示例</strong>:</p>
<pre><code>grid = np.arange(25).reshape((5,5))
#array([[ 0, 1, 2, 3, 4],
# [ 5, 6, 7, 8, 9],
# [10, 11, 12, 13, 14],
# [15, 16, 17, 18, 19],
# [20, 21, 22, 23, 24]])
neighbours(grid, 0, 0)
# array([24, 20, 21, 4, 1, 9, 5, 6])
</code></pre>
<p><strong>说明</strong>:</p>
<p>使用<code>numpy</code>可以使用负索引,从而轻松访问数组的最后一个条目。这也适用于多个维度:</p>
<pre><code>x = np.array([0,1,2,3])
x[-1]
# 3
x.reshape((2,2))
#array([[0, 1],
# [2, 3]])
x[-1,-1]
# 3
</code></pre>
<p>您对矩阵的8个条目感兴趣</p>
<ol>
<li>左上方->;第1行,第1列</li>
<li>以上->;行-1,列+0</li>
<li>右上方->;行-1,列+1</li>
<li>左->;行+0,列-1</li>
<li></李>
</ol>
<p>这就是数组<code>rows</code>和<code>cols</code>所代表的。通过添加<code>i</code>和<code>j</code>可以得到这些坐标周围的所有条目</p>