回答編集履歴

1

誤り訂正

2019/09/21 00:36

投稿

nomuken
nomuken

スコア1627

test CHANGED
@@ -1,8 +1,8 @@
1
1
  numpyのvectorizeかfrompyfuncを使う方法があると思います。
2
2
 
3
+ が、型が混在する配列の場合はfrompyfunc一択のようです。
3
4
 
4
5
 
5
- とりあえずvectorizeを使う場合
6
6
 
7
7
  ```Python
8
8
 
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- f = np.vectorize(lambda _a, _b: _a if _a is not None else _b)
13
+ f = np.vectorize(lambda _a, _b: _a or _b)
14
14
 
15
15
 
16
16
 
@@ -20,12 +20,40 @@
20
20
 
21
21
 
22
22
 
23
- print(f(a,b))
23
+ r = f(a,b)
24
+
25
+ print(r)
26
+
27
+ print([type(_r) for _r in r ])
28
+
29
+
30
+
31
+ f = np.frompyfunc(lambda _a, _b: _a or _b, 2, 1)
32
+
33
+ r = f(a,b)
34
+
35
+
36
+
37
+ print(r)
38
+
39
+ print([type(_r) for _r in r])
24
40
 
25
41
  ```
26
42
 
27
43
 
28
44
 
29
- 性能はfrompyfuncのほうが早いという記事もあります。
45
+ ```result
30
46
 
47
+ ['True' 'hoge' '1' '3']
48
+
49
+ [<class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.str_'>, <class 'numpy.str_'>]
50
+
51
+ ['True' 'hoge' 1 3]
52
+
53
+ [<class 'str'>, <class 'str'>, <class 'int'>, <class 'int'>]
54
+
55
+ ```
56
+
57
+
58
+
31
- [Python高速化実験~map関数とか~](https://takala.tokyo/takala_wp/2018/11/28/736/)
59
+ 参考記事:[Python高速化実験~map関数とか~](https://takala.tokyo/takala_wp/2018/11/28/736/)