python - 向 nifti 文件添加维度
问题描述
我有一个形状为 .nii 的 nifti 文件(.nii)(112, 176, 112)
。我想为其添加另一个维度,使其变为(112, 176, 112, 3)
. 当我尝试时,img2 = np.arange(img).reshape(112,176,112,3)
我得到一个错误。是否有可能用np.reshape
或np.arange
或任何其他方式做到这一点?
代码:
import numpy as np
import nibabel as nib
filepath = 'test.nii'
img = nib.load(filepath)
img = img.get_fdata()
img = np.arange(img).reshape(112,176,112,3)
img = nib.Nifti1Image(img, np.eye(4))
img.get_data_dtype() == np.dtype(np.int16)
img.header.get_xyzt_units()
nib.save(img, 'test_add_channel.nii')
错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-16-f6f2a2d91a5d> in <module>
8 print(img.shape)
9
---> 10 img2 = np.arange(img).reshape(112,176,112,3)
11
12 img = nib.Nifti1Image(img, np.eye(4))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
解决方案
你可以这样做:
import numpy as np
img = np.random.rand(112, 176, 112) # Your image
new_img = img.reshape((112, 176, 112, -1)) # Shape: (112, 176, 112, 1)
new_img = np.concatenate([new_img, new_img, new_img], axis=3) # Shape: (112, 176, 112, 3)
可能这是其他更好的方法,但上面的代码为您提供了您想要的输出。
推荐阅读
- php - 带有递归查询的 SQL - 尝试输出注释树
- python - NotFoundError:无法从 /content/training/ckpt-9 的检查点或 SavedModel 恢复:
- jquery - Uikit 切换器 - 防止在选定项目中切换
- tensorflow - 如何在 Tensorflow 的第一个纪元后保存进度
- html - 屏幕大时显示水平滚动条
- reactjs - redux useSelector:组件对状态更新没有反应
- ssl - Rabbitmq web_stomp ssl - 连接和断开连接(代码:1011,原因:“”)
- android - 将 gradle 更新到 7.0.3 后 buildConfigField 不起作用
- python - 为什么打开文件比加载模块慢?
- asp.net-mvc - 请求超时 (System.Web.HttpException)