numpy Python -保持原始形状的数组的交集

olhwl3o2  于 2023-08-05  发布在  Python
关注(0)|答案(2)|浏览(83)

我有两个数组,由0和1组成,我试图生成由重叠的1组成的第三个数组。基本上,如果我的数组是:

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

字符串
那么我希望输出为:

array_out = [0, 0, 0, 1, 0, 1, 0]


我第一次尝试使用numpy.intersect1d(array1, array2),但它只返回[0,1],没有保持形状。我还尝试使用numpy.isin(array1, array2),它在值匹配时返回一系列True,在不匹配时返回False。这样做的问题是,我无法区分两个数组都为0的地方和两个数组都为1的地方。
两个阵列都非常大-(256,256,256)。我还需要运行大约20次。我确实考虑过使用一个循环来单独查看每个值,但这可能需要很长时间,我希望有更有效的方法来实现。

llew8vvj

llew8vvj1#

这个有用吗?

import numpy as np
array1 = np.array([0, 0, 1, 1, 0, 1, 1])
array2 = np.array([0, 0, 0, 1, 1, 1, 0])
array1*array2

字符串
这产生了

array([0, 0, 0, 1, 0, 1, 0])

7rfyedvj

7rfyedvj2#

因为你的数组只有1和0,我们也可以使用np.allnp.logical_and

import numpy as np

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

out1 = np.all([array1, array2], axis=0)
print(out1) # [False False False  True False  True False]
print(out1.astype(int)) # [0 0 0 1 0 1 0]

out2 = np.logical_and(array1, array2)
print(out2) # [False False False  True False  True False]
print(out2.astype(int)) # [0 0 0 1 0 1 0]

字符串

相关问题