Вы можете сделать это с помощью следующего однострочника:
result = a + np.array([-1, 0, 1])[:, np.newaxis]
(я думаю, более элегантное решение).
Результат:
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]])
Edit
Если диапазон зависит от какого-то параметра, например rng , вы можете сделать это как:
rng = 2 # From x-2 to x+2
result = a + np.arange(-rng, rng + 1)[:, np.newaxis]
получить:
array([[-1, 0, 1],
[ 0, 1, 2],
[ 1, 2, 3],
[ 2, 3, 4],
[ 3, 4, 5]])