将 numpy 数组转换为 4D nifti 文件
convert numpy array to 4D nifti file
我正在 python 上进行单体素模拟,以生成带有附加噪声的模拟信号。然后,我想将生成的具有以下形状 (100, 100) 的 numpy 数组转换为 nifti 文件。
行代表在不同噪声和张量旋转条件下的一个模拟信号。每列代表在使用特定采样方案(100 个不同方向)测量时在这些条件下该体素的对应信号强度。
[DWI 数组]
我要把这个矩阵保存到一个 nifti 文件中,格式如下 (10, 10, 1, 100)。
[想要的形状]
我不知道如何正确分配 numpy 数组 (DWIs.shape = (100,100)) 到我想要的格式 (10, 10, 1, 100):
data[…, ] = ?
converted_array = np.array(data, dtype=np.float32)
nifti_file = nib.Nifti1Image(converted_array, affine=np.eye(4))
nib.save(nifti_file, os.path.join(path_to_save, 'snr{}'.format(snr), 'full/dwi_sims_snr{}.nii.gz'.format(snr)))
在 NumPy 中,您不需要“分配”数据数组。
假设您有一个 100x100 converted_array
。即
>>> converted_array.shape
(100,100)
>>> converted_array[0]
[146.4, 72.9, ..., 174.9]
那么你可以reshape
这个数组作为
>>> nifti_array = converted_array.reshape((10,10,1,100))
>>> nifti_array[0][0][0]
[146.4, 72.9, ..., 174.9]
我正在 python 上进行单体素模拟,以生成带有附加噪声的模拟信号。然后,我想将生成的具有以下形状 (100, 100) 的 numpy 数组转换为 nifti 文件。
行代表在不同噪声和张量旋转条件下的一个模拟信号。每列代表在使用特定采样方案(100 个不同方向)测量时在这些条件下该体素的对应信号强度。
[DWI 数组]
我要把这个矩阵保存到一个 nifti 文件中,格式如下 (10, 10, 1, 100)。
[想要的形状]
我不知道如何正确分配 numpy 数组 (DWIs.shape = (100,100)) 到我想要的格式 (10, 10, 1, 100):
data[…, ] = ?
converted_array = np.array(data, dtype=np.float32)
nifti_file = nib.Nifti1Image(converted_array, affine=np.eye(4))
nib.save(nifti_file, os.path.join(path_to_save, 'snr{}'.format(snr), 'full/dwi_sims_snr{}.nii.gz'.format(snr)))
在 NumPy 中,您不需要“分配”数据数组。
假设您有一个 100x100 converted_array
。即
>>> converted_array.shape
(100,100)
>>> converted_array[0]
[146.4, 72.9, ..., 174.9]
那么你可以reshape
这个数组作为
>>> nifti_array = converted_array.reshape((10,10,1,100))
>>> nifti_array[0][0][0]
[146.4, 72.9, ..., 174.9]