输入类型不支持ufunc'bitwise_and',并且不能安全地强制输入

时间:2019-12-05 09:59:43

标签: python numpy bitwise-operators numpy-ndarray

我在numpy中有两个3D浮点数组,分别表示两个Spec_opt <- list() Spec_opt$freq <- as.double(seq(-10, 19, 0.01)) # subset data subset1 <- Spec_opt$freq[Spec_opt$freq >= 18 & Spec_opt$freq < 18.5] subset2 <- Spec_opt$freq[Spec_opt$freq >= 18.5 & Spec_opt$freq < 19] # split data split(Spec_opt$freq, cut(Spec_opt$freq, breaks = c(17, 17.5, 18, 18.5, 19))) 加载的相同形状的MR图像。我想计算一个代表图像区域的遮罩,其中两个图像中的任何一个都不为零。我编写了以下简单代码:

nibabel

我遇到以下错误:输入类型不支持ufunc'bitwise_and',并且根据强制转换规则“ safe”不能将输入安全地强制转换为任何受支持的类型

为什么?我认为运算符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 >的{​​{3}}是正确的。首先完成&运算符,然后完成>,因此&操作位于两个大小相同的逻辑数组之间。问题出在哪里?

谢谢

1 个答案:

答案 0 :(得分:1)

来自评论:

(x>0)&(x<0)强制比较为第一。 – hpaulj 19年12月5日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)