5

配列があり、ある条件を満たすマトリックス内のすべてのアイテムにx関数を適用したいと思います。fNumpyはこれを簡単にするメカニズムを提供していますか?

これが例です。私の行列xには、排他的な範囲の要素のみが含まれているはずです(0, 1)。ただし、丸め誤差のため、一部の要素は0またはに等しくなる可能性があります1。その中のすべての要素について、x正確0に加算したいのですが、正確に減算したいepsilonすべての要素について。1epsilon

編集:(この編集は、 askewchanの回答を受け入れた後に行われました。)これを行う別の方法は、を使用することnumpy.clipです。

4

3 に答える 3

9

あなたはこれを行うことができます:

a = np.array([0,.1,.5,1])
epsilon = 1e-5
a[a==0] += epsilon
a[a==1] += -epsilon

これが機能する理由は、ВалераГорбуновが回答で言及したa==0ものと同じように、ブール配列を返すためです。

In : a==0
Out: array([True, False, False, False], dtype=bool)

次に、その配列をへのインデックスとして使用します。これにより、whereではなくwhereでa要素が公開されます。これでできることはたくさんあります。http://docs.scipy.org/doc/numpy/reference/arrays.indexing.htmlを参照してください。TrueFalse

于 2013-03-08T20:58:10.580 に答える
3

申し訳ありませんが、これはより具体的ではありませんが、条件を満たすすべての位置に対してTRUE値を持ち、満たさない位置に対してFALSEを持つブール配列を作成できます。

[0、1、0、0]のようなものの場合、1をテストすると、配列[FALSE、TRUE、FALSE、FALSE]が得られます。この場合、[0、1、0、0]-(イプシロン)[FALSE、TRUE、FALSE、FALSE]を実行して、0の値に影響を与えないようにすることができます。

ブール配列の例

于 2013-03-08T21:03:54.260 に答える
2

http://docs.python.org/2/tutorial/datastructures.html#functional-programming-toolsmap()で文書化されているように使用できます。

def applyEpsilon(value):
    myEpsilon = 0.001
    if value == 0:
        return myEpsilon
    elif value == 1:
        return 1-myEpsilon
    return value

inputList = [0, 0.25, 0.5, 0.75, 0.99, 1]
print map(applyEpsilon, inputList)

収量:

[0.001, 0.25, 0.5, 0.75, 0.99, 0.999]
于 2013-03-08T21:00:38.930 に答える