回答編集履歴

4

dd

2019/05/30 06:06

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -42,7 +42,7 @@
42
42
  > numpyのなにか別のモジュールを使うのでしょうか?
43
43
 
44
44
  **対角成分** といった場合、2次元配列の (i, i) 成分を指しますので、numpy.diag() では、\ 方向しかとれません。
45
- しかし、numpy.diag() にわたす前に numpy.fliplr() で左右反転させておくことで / 方向も取れます。
45
+ しかし、numpy.diag() にわたす前に numpy.fliplr() で左右反転させておくことで / 方向も取れます。(fliplr は flip left to right の略)
46
46
 
47
47
  [numpy - 配列を繰り返す、反転、回転、ローテーションする](http://pynote.hatenablog.com/entry/numpy-array-manipulation-functions#numpyfliplr)
48
48
 

3

d

2019/05/30 06:06

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -68,7 +68,7 @@
68
68
  # [25 24 23 22 21]]
69
69
  ```
70
70
 
71
- ```
71
+ ```python
72
72
  # 左右反転させた配列の対角成分をとる。
73
73
  b = np.diag(np.fliplr(array))
74
74
  print(b) # [ 5 9 13 17 21]

2

d

2019/05/30 05:59

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -34,4 +34,48 @@
34
34
  ```
35
35
 
36
36
  参考リンク:
37
- [numpy - 上三角行列、下三角行列、対角行列の作成、対角成分の取得 (diag, tri, triu, tirl, etc)](http://pynote.hatenablog.com/entry/numpy-create-upper-lower-diagonal-matrix#numpydiag)
37
+ [numpy - 上三角行列、下三角行列、対角行列の作成、対角成分の取得 (diag, tri, triu, tirl, etc)](http://pynote.hatenablog.com/entry/numpy-create-upper-lower-diagonal-matrix#numpydiag)
38
+
39
+ ## 追記
40
+
41
+ > kをどう変えても、"\"の対角線しかとれません。
42
+ > numpyのなにか別のモジュールを使うのでしょうか?
43
+
44
+ **対角成分** といった場合、2次元配列の (i, i) 成分を指しますので、numpy.diag() では、\ 方向しかとれません。
45
+ しかし、numpy.diag() にわたす前に numpy.fliplr() で左右反転させておくことで / 方向も取れます。
46
+
47
+ [numpy - 配列を繰り返す、反転、回転、ローテーションする](http://pynote.hatenablog.com/entry/numpy-array-manipulation-functions#numpyfliplr)
48
+
49
+ ```python
50
+ import numpy as np
51
+
52
+ array = np.array(
53
+ [
54
+ [1, 2, 3, 4, 5],
55
+ [6, 7, 8, 9, 10],
56
+ [11, 12, 13, 14, 15],
57
+ [16, 17, 18, 19, 20],
58
+ [21, 22, 23, 24, 25],
59
+ ]
60
+ )
61
+
62
+ # fliplr() の効果: 配列を左右反転させる。
63
+ print(np.fliplr(array))
64
+ # [[ 5 4 3 2 1]
65
+ # [10 9 8 7 6]
66
+ # [15 14 13 12 11]
67
+ # [20 19 18 17 16]
68
+ # [25 24 23 22 21]]
69
+ ```
70
+
71
+ ```
72
+ # 左右反転させた配列の対角成分をとる。
73
+ b = np.diag(np.fliplr(array))
74
+ print(b) # [ 5 9 13 17 21]
75
+
76
+ b = np.diag(np.fliplr(array), k=-2)
77
+ print(b) # [15 19 23]
78
+
79
+ b = np.diag(np.fliplr(array), k=1)
80
+ print(b) # [ 4 8 12 16]
81
+ ```

1

d

2019/05/30 05:57

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -24,7 +24,7 @@
24
24
  )
25
25
 
26
26
  b = np.diag(array)
27
- print(b)
27
+ print(b) # [ 1 7 13 19 25]
28
28
 
29
29
  b = np.diag(array, k=-2)
30
30
  print(b) # [11 17 23]