Информация об этом может быть найдена в документации pydicom .
Замечание по коду "your";): data = ds.pixel_array[:, :half_x]
присваивает представление numpy.ndarray, то есть ds.pixel_array, data
.Вызов data.save_as()
ожидаемо завершится неудачно, поскольку это атрибут ds
, а не data
.Согласно документации, вам нужно записать в атрибут ds.PixelData
примерно так:
ds.PixelData = data.tobytes() # where data is a numpy.ndarray or a view of an numpy.ndarray
# if the shape of your pixel data changes ds.Rows and ds.Columns must be updated,
# otherwise calls to ds.pixel_array.shape will fail
ds.Rows = 512 # update with correct number of rows
ds.Columns = 512 # update with the correct number of columns
ds.save_as("/my/path/after.dcm")