我目前正在处理3D numpy阵列形式的功能磁共振成像数据。但是,我的数组有各种形状:从(60,40,20,20)到(64,64,40,20)再到(96,96,60,20)之类的值。为了在机器学习框架中使用这些功能磁共振成像图像,我需要确保所有这些numpy阵列的形状相同
这就是我现在正在做的:
for f in dataset:
img_data_arr.resize (64, 64, 40, 20)
我正在使用resize函数将所有数组重塑为(64、64、40、20)形状。但是,我听说如果图像大于给定的形状,它将用重复的值替换空框。例如:
First array:
[[1 2 3]
[4 5 6]]
The shape of first array:
(2, 3)
Second array:
[[1 2]
[3 4]
[5 6]]
The shape of second array:
(3, 2)
Resize the second array:
[[1 2 3]
[4 5 6]
[1 2 3]]
有没有办法调整较小数组的大小,以便用0填充空白?谢谢大家!
如果尝试将数组调整为不同的形状,但该形状的元素数不完全相同,则会引发错误。以下是一个例子:
然而,出于功能磁共振成像和机器学习的目的,我要提醒你不要调整尺寸。因为,调整大小会改变像素的邻域,所以它可能会对您在图像中看到的内容有不同的解释。我建议使用0(或您认为合适的任何值)的
np.pad
将较小的图像填充到最大的图像大小,或者在输入端使用一个图层将图像的像素向上采样/向下采样到相同大小的图像。我认为这是一个常见问题,并且还有其他标准解决方案相关问题 更多 >
编程相关推荐