Допустим, вы работаете в декартовой плоскости 5x5. Вы можете решить представить свой план в numpy следующим образом:
>>> x = np.arange(-12,13)
>>> x.shape = (5,5)
>>> x
array([[-12, -11, -10, -9, -8],
[ -7, -6, -5, -4, -3],
[ -2, -1, 0, 1, 2],
[ 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12]])
Но ваша проблема в том, что ваше происхождение не находится в (0,0):
>>> x[0,0]
-12
, потому что все массивы начинаются с 0. Чтобы «исправить» ссылки на индексы, просто смещайте индексы массива на половину одномерного диапазона при каждой ссылке на двумерный массив:
>>> x[math.floor(0 - 5/2),math.floor(0 - 5/2)]
0
Аналогично:
>>> x[math.floor(-2 - 5/2),math.floor(-2 - 5/2)]
-12
И вы можете ссылаться на ваш массив следующим образом:
>>> for i in range(-2,3):
... for j in range(-2,3):
... ix = math.floor(i - 5/2)
... jy = math.floor(j - 5/2)
... x[ix,jy] = x[ix,jy] * 5
... print("{0:>5}".format(x[ix,jy]),end="")
... print()
...
-60 -55 -50 -45 -40
-35 -30 -25 -20 -15
-10 -5 0 5 10
15 20 25 30 35
40 45 50 55 60
Это, очевидно, надуманный пример.