Verify that the magic square created in Example E6.2 satisfies the conditions that it contains the numbers 1 to $N^2$ and that its rows, columns and main diagonals sum to $N(N^2+1)/2$.
For example,
In [x]: N = 5
In [x]: Nsq = N**2
In [x]: np.allclose(np.sort(magic_square.flatten()),
np.linspace(1, Nsq, Nsq).astype(int))
Out[x]: True
In [x]: Nsum = N * (N**2 + 1) // 2
In [x]: np.allclose(np.sum(magic_square, axis=0), Nsum)
Out[x]: True
In [x]: np.allclose(np.sum(magic_square, axis=1), Nsum)
Out[x]: True
In [x]: n.allclose(np.diag(magic_square), Nsum)
Out[x]: True
In [x]: n.allclose(np.diag(np.fliplr(magic_square)), Nsum)
Out[x]: True
np.fliplr
flips the array in the left/right direction. An alternative way to get this "other" diagonal is with a.ravel()[N-1:-N+1:N-1]
.