最好调整多个numpy阵列的大小?

2024-05-11 08:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在处理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填充空白?谢谢大家!


Tags: ofthe数据图像功能numpy机器数组
1条回答
网友
1楼 · 发布于 2024-05-11 08:25:13

如果尝试将数组调整为不同的形状,但该形状的元素数不完全相同,则会引发错误。以下是一个例子:

a = np.array([[1,2,3],[4,5,6]])
#[[1 2 3]
#[4 5 6]]

print(a.shape)
#(2, 3)

print(a.reshape(3,2))
#[[1 2]
# [3 4]
# [5 6]]

print(a.reshape(3,3))
#ValueError: cannot reshape array of size 6 into shape (3,3)

然而,出于功能磁共振成像和机器学习的目的,我要提醒你不要调整尺寸。因为,调整大小会改变像素的邻域,所以它可能会对您在图像中看到的内容有不同的解释。我建议使用0(或您认为合适的任何值)的np.pad将较小的图像填充到最大的图像大小,或者在输入端使用一个图层将图像的像素向上采样/向下采样到相同大小的图像。我认为这是一个常见问题,并且还有其他标准解决方案

相关问题 更多 >