有没有办法在pydicom中添加多值和列表

2024-03-28 11:24:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将MultiValue添加到列表中。但我有个错误,说我不能。我还尝试了.append.extend将多值添加到列表中,但得到的错误是无法将NaN值添加到列表中。而且,我很难理解什么是MultiValue

我尝试运行的代码是:

original_z_spacing = np.abs(patient_data[0].ImagePositionPatient[2]
                            - patient_data[1].ImagePositionPatient[2])
# obtain rescaled HU array
hu_array = get_hounsfield_unit_array(patient_data)

original_spacings = np.array(patient_data[0].PixelSpacing + [original_z_spacing], dtype='float32')  # the error occurs here 

患者数据是包含dicom文件的1595个文件夹的文件夹。我在Python3.7和pydicom版本1.4.2上运行这段代码。我得到的错误是:

TypeError: unsupported operand type(s) for +: 'MultiValue' and 'list'

Tags: 代码文件夹列表data错误npnanarray
1条回答
网友
1楼 · 发布于 2024-03-28 11:24:33

这里有两个问题:aMultiValue确实不能添加到列表中,但您可以将其强制转换为list。在这种情况下,仅此一点不起作用,因为PixelSpacing具有VR“DS”,例如,被写入字符串值,因此必须首先将其转换为float

这应该起作用:

pixel_spacing = patient_data[0].PixelSpacing
original_spacings = np.array([float(pixel_spacing[0]), float(pixel_spacing[1]), original_z_spacing], dtype='float32')

MultiValuepydicom中用于表示多值标记值的类。它的行为大部分类似于列表(它派生自MutableSequence),如果需要,可以转换为列表

相关问题 更多 >