numpyで効率的に行列を作りたい
ある整数Nを与えたら、以下のようなN×N-1の行列Zを出力するようなプログラムを書きたいです。
Z = [[1 2 3 ... N]
[0 2 3 ... N]
[0 1 3 ... N]
...
[0 1 2 ... N]
[0 1 2 ... N-1]]
つまり、i番目の行は、iを除くすべての値を持っているような行列です。単純なコードを書くと
Z = [[j for j in range(N) if j != i] for i in range(N)]
となるのですが、Nが大きくなると時間がかかってしまいます。
このようなことを、numpyで効率的に書くにはどうすれば良いでしょうか?