ValueError:NumPy布尔数组索引赋值不能将0个输入值赋给掩码为真的N个输出值
我有一个Dicom文件,我想对里面的体素(就是三维像素)应用几个不同的遮罩,并进行不同的操作。不过,我希望保持原始数组中的位置,因为我想重建这个图像。这是我目前做的:
#The dicom data
a=dicomm_data.pixel_array
#start function
my_modified_array = np.zeros_like(a)
#mask 1
m1=a[(a>limit_1) & (a<limit_2)]
m1=m1*chosen_number1 + chose_number2
my_modified_array [(a>limit_1) & (a<limit_2)] = m1
#mask 2
m2=a[(a>limit_2+1) & (a<limit_3)]
m2=m1*chosen_number3+chosen_number_4
my_modified_array [(a>limit_2+1) & (a<limit_3)] = m2
然后我继续添加更多的遮罩。不过,我遇到了标题中提到的错误。我看过另一个帖子,里面提到了numpy.where这个函数,但我还是没法解决这个问题。
1 个回答
1
当m1
是一个空数组,而a[(a>limit_2+1) & (a<limit_3)]
却不是空的时候,你会遇到这个错误。我觉得
m2=m1*chosen_number3+chosen_number_4
应该是这样
m2=m2*chosen_number3+chosen_number_4
这就是你在m1
中使用的模式,这样可以解决这个错误。