You can create the expected pairs with np.dstack, and then apply the function on the third axis with np.apply_along_axis.
new = np.dstack((arr[:,:-1], arr[:, 1:]))
np.apply_along_axis(np.sum, 2, new)
Example:
In [86]: arr = np.array([[ 1, 1, 1, 1, 1, 1, 1, 1, 1, -1],
...: [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
...: [ 1, 1, 1, 1, 1, 1, -1, 1, 1, 1],
...: [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
...: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
...: [ 1, 1, 1, 1, 1, 1, 1, 1, 1, -1],
...: [-1, -1, 0, -1, -1, -1, -1, -1, -1, 0],
...: [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
...: [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
...: [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=np.int8)
...:
...:
In [87]: new = np.dstack((arr[:,:-1], arr[:, 1:]))
In [88]: new
Out[88]:
array([[[ 1, 1],
[ 1, 1],
[ 1, 1],
[ 1, 1],
[ 1, 1],
[ 1, 1],
[ 1, 1],
[ 1, 1],
[ 1, -1]],
...
In [89]:
In [89]: np.apply_along_axis(np.sum, 2, new)
Out[89]:
array([[ 2, 2, 2, 2, 2, 2, 2, 2, 0],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 2, 2, 2, 2, 2, 0, 0, 2, 2],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 2, 2, 2, 2, 2, 2, 2, 2, 0],
[-2, -1, -1, -2, -2, -2, -2, -2, -1],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2],
[ 2, 2, 2, 2, 2, 2, 2, 2, 2]])