2017-02-28 2 views
-3

그래서 여러 3D 배열을 함께 추가해야합니다. 각 배열은 0 또는 1이있는 항목으로 구성됩니다. 모든 배열의 차원도 동일합니다. 이제,이 배열을 함께 추가하면 값 중 일부가 겹칩니다. 그러나 전체 결합 배열의 구조가 어떻게되는지 알아야합니다. 즉, 2 또는 3 배열이 겹쳐 질 때 값 1, 2 또는 3이 필요하지 않습니다. 이것은 또한 하나 일 필요가 있으며, 물론 0이있을 때마다 0을 유지하면됩니다.배열의 모든 양수 값을 1로 변경하십시오 (파이썬)

그래서 기본적으로 내가 무엇을 가지고 : 그래서

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

아, 그래, 그들은 numpy 배열입니다. 하지만 고맙습니다. 운영자. –

관련 문제