numpy.selectを使用して配列に条件付きで値を割り当てようとしています。しかし、選択の使用は、DIV/0エラーが発生する可能性がいうだけで、関連する割り当てよりも、すべての可能な割り当て、例えばの計算を必要とします。numpy.selectでdiv/0エラーを避ける
import numpy as np
def testfunc(z):
conditionlist = [z < 0, z == 0, z > 0]
choicelist = [1/z, 0, 1 + z]
return np.select(conditionlist, choicelist)
if __name__ == "__main__":
print testfunc(np.array([0]))
このコードは、DIV/0エラーで失敗します
、1/Zもののz = 0は、実際に返される配列に代入する必要はありません。
div/0エラーを実行しないでnumpy配列に条件付きで値を割り当てる方法はありますか?ループは唯一のオプションですか?
ニートトリック。このアプローチやループがより効率的であるかどうか、ご存知ですか?ループは、未使用の計算をたくさん避けるでしょう... – elhefe
@elhefe:私は(私は怠惰な)確かに測定する必要がありますが、私の直感はループが**多く**遅くなるということです。 –