回答編集履歴

5 追記

hayataka2049

hayataka2049 score 29879

2018/11/18 11:50  投稿

これで良いのでは。
```python
a[0,0] = a[1,1] = a[2,2] = 1000
```
ちょっと凝ってみると、こうした方がスマートかもしれません。
```python
a[np.eye(3, dtype=bool)] = 1000
```
あるいはこんな。
```python
a + 1000*np.eye(3)
```
実行例
```python
>>> import numpy as np
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])
>>> a
array([[0, 1, 0],
      [1, 0, 2],
      [0, 2, 0]])
>>> a[0,0] = a[1,1] = a[2,2] = 1000
>>> a
array([[1000,   1,   0],
      [  1, 1000,   2],
      [  0,   2, 1000]])
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])
>>> a[np.eye(3, dtype=bool)] = 1000
>>> a
array([[1000,   1,   0],
      [  1, 1000,   2],
      [  0,   2, 1000]])
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])
>>> a + 1000*np.eye(3)
array([[1000.,   1.,   0.],
      [  1., 1000.,   2.],
      [  0.,   2., 1000.]])
```
```
最後の方法以外はin-placeで処理するので、もとのaを残して別途bを作りたければ配列のコピー操作をする必要があります。
4 追記

hayataka2049

hayataka2049 score 29879

2018/11/18 11:36  投稿

これで良いのでは。
```python
a[0,0] = a[1,1] = a[2,2] = 1000
```
ちょっと凝ってみると、こうした方がスマートかもしれません。
```python
a[np.eye(3, dtype=bool)] = 1000
```  
 
あるいはこんな。  
```python  
a + 1000*np.eye(3)  
```
実行例
```python
>>> import numpy as np
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])
>>> a
array([[0, 1, 0],
      [1, 0, 2],
      [0, 2, 0]])
>>> a[0,0] = a[1,1] = a[2,2] = 1000
>>> a
array([[1000,   1,   0],
      [  1, 1000,   2],
      [  0,   2, 1000]])
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])
>>> a[np.eye(3, dtype=bool)] = 1000
>>> a
array([[1000,   1,   0],
      [  1, 1000,   2],
      [  0,   2, 1000]])
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])  
>>> a + 1000*np.eye(3)  
array([[1000.,   1.,   0.],  
      [  1., 1000.,   2.],  
      [  0.,   2., 1000.]])  
```
3 追記

hayataka2049

hayataka2049 score 29879

2018/11/18 11:34  投稿

これで良いのでは。
```python
a[0,0] = a[1,1] = a[2,2] = 1000
```
ちょっと凝ってみると、こうした方がスマートかもしれません。
```python
a[np.eye(3, dtype=bool)] = 1000
```
実行例  
```python
>>> import numpy as np  
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])
>>> a
array([[0, 1, 0],
      [1, 0, 2],
      [0, 2, 0]])
>>> a[0,0] = a[1,1] = a[2,2] = 1000
>>> a
array([[1000,   1,   0],
      [  1, 1000,   2],
      [  0,   2, 1000]])
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])
>>> a[np.eye(3, dtype=bool)] = 1000
>>> a
array([[1000,   1,   0],
      [  1, 1000,   2],
      [  0,   2, 1000]])
```
2 追記

hayataka2049

hayataka2049 score 29879

2018/11/18 11:34  投稿

これで良いのでは。
```python
a[0,0] = a[1,1] = a[2,2] = 1000
```
ちょっと凝ってみると、こうした方がスマートかもしれません。
```python
a[np.eye(3, dtype=bool)] = 1000
```  
 
```python  
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])  
>>> a  
array([[0, 1, 0],  
      [1, 0, 2],  
      [0, 2, 0]])  
>>> a[0,0] = a[1,1] = a[2,2] = 1000  
>>> a  
array([[1000,   1,   0],  
      [  1, 1000,   2],  
      [  0,   2, 1000]])  
>>> a = np.array([[0,1,0],[1,0,2],[0,2,0]])  
>>> a[np.eye(3, dtype=bool)] = 1000  
>>> a  
array([[1000,   1,   0],  
      [  1, 1000,   2],  
      [  0,   2, 1000]])  
```
1 追記

hayataka2049

hayataka2049 score 29879

2018/11/18 11:33  投稿

これで良いのでは。
```python
a[0,0] = a[1,1] = a[2,2] = 1000
```  
 
ちょっと凝ってみると、こうした方がスマートかもしれません。  
 
```python  
a[np.eye(3, dtype=bool)] = 1000  
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る