2

numpy.select を使用して、条件付きで値を配列に割り当てようとしています。ただし、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 エラーで失敗しますが、z = 0 の 1 / z を返された配列に実際に割り当てる必要はありません。

div/0 エラーに遭遇することなく、条件付きで numpy 配列に値を割り当てるにはどうすればよいですか? ループは唯一のオプションですか?

4

2 に答える 2

5
np.select([z < 0, z == 0, z > 0], [1 / (z + (z == 0)), 0, 1 + z])

z == 0ブール値の配列を与える. これを に追加すると、使用するインデックスにz等しいゼロ要素のない配列が得られます。znp.select

于 2012-04-21T19:09:36.770 に答える
1

numpy.seterrを使用して、ゼロ除算の動作をレイズから別のものに変更します。

于 2012-04-21T18:55:30.440 に答える