0

lambdax が 0 の場合、x に 1 を加算する a を使用したいと思います。私は次の表現を試しました:

t = map(lambda x: x+1 if x==0 else x, numpy.array())
t = map(lambda x: x==0 and x+1 or x, numpy.array())
t = numpy.apply_along_axis(lambda x: x+1 if x==0 else x, 0, numpy.array())

これらの各式は、次のエラーを返します。

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

とについての私の理解はmap()numpy.apply_along_axis()何らかの関数を取り、それを配列の各値に適用するというものでした。エラーから、ラムダがx=array配列内の値ではなく として評価されているようです。私は何を間違っていますか?

これを実現する関数を作成できることはわかっていますが、Python の関数型プログラミングの側面にもっと慣れたいと思っています。

4

1 に答える 1

8

numpy を使用している場合は、ベクトル化されたコードを記述する必要があります。

arr + (arr == 0)
于 2012-11-23T23:03:38.107 に答える