teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足追加

2017/09/19 10:50

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -23,4 +23,43 @@
23
23
  a = np.arange(12).reshape(3,4)
24
24
  list_b = [10, -10]
25
25
  res = np.where(a % 2 == 0, a * list_b[0] ,a * list_b[1])
26
- ```
26
+ ```
27
+
28
+
29
+ ---
30
+
31
+ **【補足】**
32
+ lambdaで引数をバインドした例
33
+
34
+ ```Python
35
+ import numpy as np
36
+
37
+ def hoge(a, list_b):
38
+ if a % 2 == 0: # 偶数
39
+ x = a * list_b[0]
40
+ else: # 奇数
41
+ x = a * list_b[1]
42
+ return x
43
+
44
+
45
+ # 変数の定義
46
+ a = np.arange(12).reshape(3,4)
47
+ param_b = [10, -10]
48
+ param_c = [100, -100]
49
+ param_d = [1000, -1000]
50
+
51
+ # param_b を引数にした関数をvectorize
52
+ uf_hoge_b = np.vectorize(lambda a: hoge(a, param_b))
53
+
54
+ # param_c を引数にした関数をvectorize
55
+ uf_hoge_c = np.vectorize(lambda a: hoge(a, param_c))
56
+
57
+ # param_d を引数にした関数をvectorize
58
+ uf_hoge_d = np.vectorize(lambda a: hoge(a, param_d))
59
+
60
+
61
+ # 処理
62
+ print(uf_hoge_b(a))
63
+ print(uf_hoge_c(a))
64
+ print(uf_hoge_d(a))
65
+ ```