2017-02-28 35 views
-3

因此,我需要將幾個3D陣列添加到一起。每個數組由具有0或1的條目組成。所有數組也具有相同的維度。現在,當我將這些數組添加在一起時,某些值會重疊(它們會這樣做)。但是,我只需要知道整個組合數組的結構,這意味着當2或3個數組重疊時,我不需要值1,2或3。這也只需要一個,當然,只要零點存在,值零就只需保持零。將陣列中的所有正數值更改爲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 

但你真正想要的是具有1其中array1array21一個數組,所以才其直接寫入這樣的:

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

啊,是的,他們是數組。但是,謝謝你,我不知道| |運營商。 –

相關問題