2017-02-28 8 views
-3

私は一緒に追加する必要があるいくつかの3D配列を持っています。各配列は、0または1のいずれかのエントリで構成されます。すべての配列も同じ次元を持ちます。さて、これらの配列を一緒に追加すると、値の一部がオーバーラップします(オーバーラップします)。しかし、合計結合配列の構造がどのようになっているかを知る必要があります。つまり、2または3の配列が重複している場合は、値1,2、または3は必要ありません。これはちょうど1つである必要があります。もちろん、ゼロがあるところでは、値ゼロはゼロのままにする必要があります。だから、基本的に私が持っているもの配列のすべての正の値を1(Python)に変更します

は次のとおりです。

array1 = 
[[[1, 0, 0], [0, 0, 0], [0, 0, 0]], 
[[0, 1, 0], [0, 0, 0], [0, 0, 0]], 
[[0, 0, 1], [1, 1, 1], [0, 0, 0]]] 

array2 = 
[[[1, 0, 0], [0, 1, 0], [0, 0, 0]], 
[[0, 0, 0], [1, 1, 0], [0, 0, 0]], 
[[0, 0, 1], [0, 1, 0], [0, 0, 0]]] 

一緒にそれらを追加するときだから私は得る:

私は実際にそれが私を与えたい
array_total = array1 + array2 = 
[[[2, 0, 0], [0, 1, 0], [0, 0, 0]], 
[[0, 1, 0], [1, 1, 0], [0, 0, 0]], 
[[0, 0, 2], [1, 2, 1], [0, 0, 0]]] 

array_total = array1 + array2 = 
[[[1, 0, 0], [0, 1, 0], [0, 0, 0]], 
[[0, 1, 0], [1, 1, 0], [0, 0, 0]], 
[[0, 0, 1], [1, 1, 1], [0, 0, 0]]] 

ので、誰が私にこれがどのように行われるかのヒントを与えることができますか?

+0

これは 'numpy'配列ですか? –

+2

配列がnumpyの場合、 'array1 | array2' –

答えて

2

(これらはnumpyアレイであると仮定するか、またはarray1 + array2は異なる動作をします)。

あなたは「1にすべての正の値を変更」する場合は、この

array_total[array_total > 0] = 1 

を行うことができますしかし、あなたが実際に欲しいのは、単にarray1またはarray21を持って1を持つ配列であるので、それはそのように直接書き込む:

array_total = array1 | array2 

例:

>>> array1 = np.array([[[1, 0, 0], [0, 0, 0], [0, 0, 0]], 
... [[0, 1, 0], [0, 0, 0], [0, 0, 0]], 
... [[0, 0, 1], [1, 1, 1], [0, 0, 0]]]) 
>>> array2 = np.array([[[1, 0, 0], [0, 1, 0], [0, 0, 0]], 
... [[0, 0, 0], [1, 1, 0], [0, 0, 0]], 
... [[0, 0, 1], [0, 1, 0], [0, 0, 0]]]) 
>>> array1 | array2 
array([[[1, 0, 0], [0, 1, 0], [0, 0, 0]], 
     [[0, 1, 0], [1, 1, 0], [0, 0, 0]], 
     [[0, 0, 1], [1, 1, 1], [0, 0, 0]]]) 
+0

ああ、そうですね、それらは配列が分かりません。しかし、ありがとう、私は|オペレーター。 –

関連する問題