将数组中的所有正值更改为1(Python)

时间:2017-02-28 22:35:24

标签: python arrays

所以我需要添加几个3D数组。每个数组由0或1的条目组成。所有数组也具有相同的维度。现在,当我将这些数组加在一起时,一些值重叠(他们这样做)。但是,我只需要知道总组合阵列的结构如何,这意味着当2或3个数组重叠时,我不需要值1,2或3。这也只需要一个,当然,只要有零,零值只需要保持为零。

基本上我所拥有的是:

let someOtherPath = new SomeOtherPath('some-other-path');

// now I can call
someOtherPath.relationships.one.someMethodFromThatRelationship();

// and can also call the save method from the extended class
someOtherPath.one().makePath();
// some-other-path/one

// I can also just call 
someOtherPath.makePath();
// some-other-path

所以当我们将它们加在一起时,我得到:

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]]]

那么有人能给我一个如何做到这一点的暗示吗?

1 个答案:

答案 0 :(得分:2)

(假设这些是numpy数组,或array1 + array2的行为不同。)

如果您想“将所有正值更改为1”,则可以执行此操作

array_total[array_total > 0] = 1

但你真正想要的是一个1的数组,其中array1array2有一个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]]])