1

次元 (10x10) の配列があり、別の配列 (10x10) を作成したいと考えています。最初のものは A と呼ばれ、2 番目のものは B と呼ばれます。A の値がそれぞれゼロの場合は B の値が 0 になり、A の値がゼロでない場合は別の値 (私が指定) を c とします。

そんな感じ

B[i] = A[i] == 0 ? 0 : c

これは numpy によって自動的に実行できますか?次のように:

B = A == 0 ? 0:c

または、要素ごとに配列をトラバースする必要がありますか?

詳細情報の編集:

numpy Array(10x10) A と同じ次元の B があります。もう一つ作成しました

dif = A-B

現在、A にはゼロ要素があり、B には 2 つの要素があるため、エルゴ dif にはいくつかのゼロ要素があります

別の C numpy 配列を作成したいのですが、A に要素ゼロがある場合、C の値はゼロになりますが、そうでない場合、値は dif/A (要素の除算) になります

4

1 に答える 1

3

使用できますnp.where

>>> A
array([[3, 2, 0, 3],
       [0, 3, 3, 0],
       [3, 1, 1, 0],
       [2, 1, 3, 1]])

>>> np.where(A==0, 0, 5)
array([[5, 5, 0, 5],
       [0, 5, 5, 0],
       [5, 5, 5, 0],
       [5, 5, 5, 5]])

これは基本的にどこにA==00 を置き、それ以外は 5 を置きます。2 番目と 3 番目の引数は、マスクと同じ次元に一致する限り、多次元配列にすることができます。

C
array([[7, 8, 8, 6],
       [5, 7, 5, 5],
       [6, 9, 9, 9],
       [9, 7, 5, 8]])

np.where(A==0 ,0, C)
array([[7, 8, 0, 6],
       [0, 7, 5, 0],
       [6, 9, 9, 0],
       [9, 7, 5, 8]])

D
array([[145, 179, 123, 129],
       [173, 156, 108, 130],
       [186, 162, 157, 197],
       [178, 160, 176, 103]])

np.where(A==0, D, C)
array([[  7,   8, 123,   6],
       [173,   7,   5, 130],
       [  6,   9,   9, 197],
       [  9,   7,   5,   8]])
于 2013-10-31T15:32:11.653 に答える