対角に配列を代入する場合は、np.fill_diagonal()関数を用います。
np.diag_indices()でインデックスを取得してから代入すると二度手間になりますので、np.fill_diagonal()を使用したほうが高速に動作します。
python
1# 実行例
2In [11]: a = np.zeros(64, dtype=int).reshape(8, 8)
3 ...: a
4Out[11]:
5array([[0, 0, 0, 0, 0, 0, 0, 0],
6 [0, 0, 0, 0, 0, 0, 0, 0],
7 [0, 0, 0, 0, 0, 0, 0, 0],
8 [0, 0, 0, 0, 0, 0, 0, 0],
9 [0, 0, 0, 0, 0, 0, 0, 0],
10 [0, 0, 0, 0, 0, 0, 0, 0],
11 [0, 0, 0, 0, 0, 0, 0, 0],
12 [0, 0, 0, 0, 0, 0, 0, 0]])
13
14In [12]: v = np.arange(1, 8)
15 ...: np.fill_diagonal(a[:, 1:], v)
16
17In [13]: a
18Out[13]:
19array([[0, 1, 0, 0, 0, 0, 0, 0],
20 [0, 0, 2, 0, 0, 0, 0, 0],
21 [0, 0, 0, 3, 0, 0, 0, 0],
22 [0, 0, 0, 0, 4, 0, 0, 0],
23 [0, 0, 0, 0, 0, 5, 0, 0],
24 [0, 0, 0, 0, 0, 0, 6, 0],
25 [0, 0, 0, 0, 0, 0, 0, 7],
26 [0, 0, 0, 0, 0, 0, 0, 0]])
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。