回答編集履歴
2
d
test
CHANGED
@@ -126,4 +126,38 @@
|
|
126
126
|
|
127
127
|
|
128
128
|
|
129
|
-
division by zero はおこならい (最初の列目
|
129
|
+
division by zero はおこならい (最初の列目+最後の列=0ではない)ことを仮定しています。
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
## zero 除算対策版
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
最初の列目+最後の列=0となることがある場合は、割れないので値を0とする場合
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
```python
|
142
|
+
|
143
|
+
import numpy as np
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
a = np.array([[7, 2, 1, 3], [15, 4, 1, 5], [20, 5, 1, 10]], dtype=float)
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
s = (a[:, 0] + a[:, -1])[:, np.newaxis]
|
152
|
+
|
153
|
+
out = np.divide(a, s, out=np.zeros_like(a), where=s != 0)
|
154
|
+
|
155
|
+
print(out)
|
156
|
+
|
157
|
+
# [[0.7 0.2 0.1 0.3 ]
|
158
|
+
|
159
|
+
# [0.75 0.2 0.05 0.25 ]
|
160
|
+
|
161
|
+
# [0.66666667 0.16666667 0.03333333 0.33333333]]
|
162
|
+
|
163
|
+
```
|
1
df
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
|
38
38
|
|
39
|
-
```
|
39
|
+
```python
|
40
40
|
|
41
41
|
s = a[:, 0] + a[:, -1]
|
42
42
|
|
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
```
|
53
|
+
```python
|
54
54
|
|
55
55
|
s[:, np.newaxis]
|
56
56
|
|
@@ -82,7 +82,7 @@
|
|
82
82
|
|
83
83
|
|
84
84
|
|
85
|
-
左辺が (3, 4) の配列、右辺が (3, 1) の配列なので、
|
85
|
+
左辺 `a` が (3, 4) の配列、右辺 `s[:, np.newaxis]` が (3, 1) の配列なので、
|
86
86
|
|
87
87
|
右辺が (3, 1) -> (3, 4) に broadcast されてから除算される。
|
88
88
|
|
@@ -110,7 +110,7 @@
|
|
110
110
|
|
111
111
|
```
|
112
112
|
|
113
|
-
としてから、配列 a と要素ごとの除算
|
113
|
+
としてから、配列 a と上の配列の要素ごとの除算
|
114
114
|
|
115
115
|
|
116
116
|
|
@@ -118,7 +118,7 @@
|
|
118
118
|
|
119
119
|
|
120
120
|
|
121
|
-
```
|
121
|
+
```python
|
122
122
|
|
123
123
|
a / s[:, np.newaxis] * 100
|
124
124
|
|