我想比较两个 numpy 数组并创建第三个数组

I want to compare two numpy arrays and create a third array

如标题所示,我想比较两个元素为 1 和 0 的 sitk 数组,并创建一个元素为 1 的第三个数组,其中两个数组都为 1 和 0 的任何其他情况。数组大小相同并且是 3 维的,但是有没有比使用嵌套 for-loops?

遍历它们更有效的方法呢?
import numpy as np

a = np.random.randint(low=0, high=2, size=(2,3,4), dtype=np.int)
print(a)

b = np.random.randint(low=0, high=2, size=(2,3,4), dtype=np.int)
print(b)

c = np.logical_and(a,b).astype(int)
print(c)

这就是你要找的吗?

arr_shape = (1,4,3)
a = np.random.randint(low=0,high=2, size=arr_shape)
print(a)
b = np.random.randint(low=0,high=2, size=arr_shape)
print(b)
# the new array. subtract a and b and get the absolute value.
# then invert to get the required array
d = (~abs(b - a).astype(bool)).astype(int)
print(d)

输出:

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

如果你有 SimpleITK 图片,你可以使用 And 函数。

import SimpleITK as sitk
result = sitk.And(image1, image2)

这是 AndImageFilter 的功能版本。您可以在此处阅读 class 的文档: https://simpleitk.org/doxygen/latest/html/classitk_1_1simple_1_1AndImageFilter.html