ValueError:NumPy布尔数组索引赋值不能将0个输入值赋给掩码为真的N个输出值

7 投票
1 回答
25887 浏览
提问于 2025-05-01 06:40

我有一个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中使用的模式,这样可以解决这个错误。

撰写回答