実現したいこと
python
1a = np.array([None, None, 1, 3]) 2b = np.array([True, 'hoge', 2, 0]) 3 4# ...ここで何か計算してcに代入 5# 内容としては、a が None なら、同じ index の位置にある b の値を c に代入する 6# a が None 以外なら b の値は無視する 7 8print(c) 9=> [True, 'hoge', 1, 3]
上記のような処理を実装したいのですが方法がわかりません。
for
や while
を使用すれば簡単に実装できることはわかっていて既に実装済みですが、それを使うつもりはありません。
何万回もloopが発生するため、処理時間がかかかり過ぎてしまうためです。
そうではなく、numpy配列の特性を利用して、apply
メソッドなどを利用してまとめて計算したいと考えています。
numpyは次のような計算ができると聞いています
python
1a = np.array([1, 2, 3]) 2b = np.array([4, 5, 6]) 3c = a + b 4 5print(c) 6=> [5, 7, 9]
このように、まとめて計算したいのです。
また、numpyに限らず、series や dataframe列同士の演算でも同じことを実現したいと考えています。
補足
もう一度書いておきますが、for や while といった loop は処理速度に問題が生じるため使いたくありません。
python
1a = np.array([None, None, 1, 3]) 2b = np.array([True, 'hoge', 2, 0]) 3c = [] 4 5for (a_i, b_i) in zip(a, b): 6 c.append(a_i or b_i) 7 8print(c)
こんな感じで実装できそうなことはなんとなくわかっていますが、こういったloop処理の速度を改善するために質問しております。
参考資料の提示のみでも構いません
お手数ですが、こういった処理方法が書かれている本やwebサイトがありましたら、それをご教示いただけるだけでも構いません。
また、「Pythonによるデータ分析入門 Numpy, pandas を使ったデータ処理」は所有しておりますので、記載されている該当ページをご教示いただくだけでも構いません(私は見つけられませんでした)....
ご協力お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/21 00:13
2019/09/21 05:10 編集
2019/09/22 02:35
2019/09/22 03:13
2019/09/22 08:28