2017-02-28 31 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

啊,是的,他们是数组。但是,谢谢你,我不知道| |运营商。 –

相关问题