我在numpy中有两个3D浮动数组,代表两个形状相同的MR图像,加载了以下内容。nibabel
. 我想计算一个掩码,代表两幅图像中没有零的区域。我写了下面的简单代码。
nii = nib.load('./T1.nii.gz')
t1 = nii.get_data()
nii = nib.load('./T2.nii.gz')
t2 = nii.get_data()
mask = t1 > 0 & t2 > 0
我得到了以下错误: ufunc 'bitwise_and' 不支持输入类型,并且输入不能被安全地强制到任何支持的类型,根据铸造规则''safe''。
为什么?我想... 先例 o 经营者 >
和 &
是正确的。第一 >
操作员完成后,再进行 &
所以 &
操作在两个相同大小的逻辑数组之间。问题出在哪里?
谅谅
从评论中。
(x>0)&(x<0)
强制比较的结果是第一。- hpaulj 十二月 5 '19 在 15:43
我做过的其他比较都是这样的,它们需要封装在 (
)
如果它们在同一个语句中被评估的话。因此,你可以通过将它们放在另一个变量中来提前评估它们,或者将它们封装为
nii = nib.load('./T1.nii.gz')
t1 = nii.get_data()
nii = nib.load('./T2.nii.gz')
t2 = nii.get_data()
mask1 = t1 > 0
mask = mask1 & (t2 > 0)