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

Is there a way to add MultiValues and lists in pydicom

我正在尝试将 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 

患者数据是一个包含 1595 个文件夹的文件夹,其中包含 dicom 文件。我 运行 在 Python 3.7 和 pydicom 版本 1.4.2 上使用此代码。我收到的错误是:

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

这里有两个问题:MultiValue确实不能加到列表中,但是可以强制转换为list。在这种情况下,仅此一项是行不通的,因为 PixelSpacing 具有 VR "DS",例如被写为字符串值,因此您必须先将其转换为浮点数。

这应该有效:

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

MultiValue是在pydicom中使用的class表示多值标签的值。它主要表现得像一个列表(它派生自 MutableSequence)并且可以根据需要转换为列表。