ValueError:NumPy 布尔数组索引分配无法将 0 个输入值分配给掩码为 true 的 N 个输出值

Dim*_*oim 7 python numpy

我有一个 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
Run Code Online (Sandbox Code Playgroud)

我继续戴更多面具。但是,我收到标题中提到的错误。我读过另一篇文章,它使用 numpy.where 函数,但仍然无法修复它。

War*_*ser 1

m1当是空数组但a[(a>limit_2+1) & (a<limit_3)]不为空时,您会收到错误。我认为

m2=m1*chosen_number3+chosen_number_4
Run Code Online (Sandbox Code Playgroud)

应该

m2=m2*chosen_number3+chosen_number_4
Run Code Online (Sandbox Code Playgroud)

这就是您与 一起使用的模式m1,这将修复错误。