質問編集履歴
1
「ちなみに...」を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -90,11 +90,67 @@
|
|
90
90
|
|
91
91
|
## 知りたいこと
|
92
92
|
|
93
|
-
A.
|
93
|
+
A. なぜNumpyの方が遅くなってしまうのでしょうか。
|
94
94
|
|
95
|
-
B.
|
95
|
+
B. おそらく、実際はNumpyの方が速いのではと思いますが、どなたか同じ方法で検証してみて頂けないでしょうか。
|
96
96
|
|
97
97
|
C. ついでに、timeitにglobals()を付けると結果が大きく変わるのはなぜでしょうか。
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
### ちなみに...
|
102
|
+
|
103
|
+
本件と直接関係ありませんが、他のコードにて、
|
104
|
+
|
105
|
+
np.linalg.normが異常に遅く、普通のpythonのコードに書き換えたことがあります。
|
106
|
+
|
107
|
+
これはありえない?
|
108
|
+
|
109
|
+
```
|
110
|
+
|
111
|
+
a1 = np.random.randint(1,10, (2))
|
112
|
+
|
113
|
+
a2 = np.random.randint(1,10, (2))
|
114
|
+
|
115
|
+
l1 = [random.randint(1,10) for i in range(2)]
|
116
|
+
|
117
|
+
l2 = [random.randint(1,10) for i in range(2)]
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
#a1=[8 9], <class 'numpy.ndarray'>
|
122
|
+
|
123
|
+
#a2=[9 1], <class 'numpy.ndarray'>
|
124
|
+
|
125
|
+
#l1=[1, 7], <class 'list'>
|
126
|
+
|
127
|
+
#l2=[9, 8], <class 'list'>
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
%%timeit
|
132
|
+
|
133
|
+
length1 = ((l2[0] - l1[0]) ** 2 + (l2[1] - l1[1]) ** 2) ** 0.5
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
#1.14 µs ± 18.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
%%timeit
|
142
|
+
|
143
|
+
length2 = np.linalg.norm(a2 - a1)
|
144
|
+
|
145
|
+
length2
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
#4.99 µs ± 301 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
|
150
|
+
|
151
|
+
```
|
152
|
+
|
153
|
+
|
98
154
|
|
99
155
|
|
100
156
|
|