This way:
import torch

population = torch.tensor([
                   [6, 8, 10,  7, 5, 0, 0],
                   [5, 7,  9, 11, 8, 7, 3],
                   [4, 6,  6,  8, 5, 4, 1]
             ]
)

moves = torch.tensor([
                   [0, 0,  0,  0, 2, 0, 0],
                   [0, 0, -1,  0, 0, 0, 0],
                   [0, 0,  0, -3, 0, 1, 0]
             ]
)

right = (moves > 0).nonzero(as_tuple=True)
left = (moves < 0).nonzero(as_tuple=True)

mask = torch.zeros_like(population)

mask[right] = -1
mask[left] = -1

mask[right[0], right[1] + moves[right]] = 1
mask[left[0], left[1] + moves[left]] = 1

population += mask

print(population)