如何添加不同长度数组numpy

watbbzwu  于 2023-03-30  发布在  其他
关注(0)|答案(2)|浏览(175)

我有这样简单代码

for item in images:
  img_org = nii_reader(item)
  img = sitk.GetArrayFromImage(img_org)
  print(img.shape)

输出是这样的

(9, 40, 43)
(9, 46, 50)
(8, 40, 38)
(6, 46, 45)
(4, 47, 44)
(8, 57, 54)
(7, 45, 44)
(8, 53, 49)
(8, 45, 48)

我希望所有的img到一个数组。我已经尝试了这样的代码

train = np.array([])
for item in images:
  img_org = nii_reader(item)
  img = sitk.GetArrayFromImage(img_org)
  train = np.append(train, img)
print(train.shape)

但长度是

(1728287,)

我怎样才能得到这样的长度?

(9, 9, 57, 54)
nzrxty8p

nzrxty8p1#

你可能不能用np.stack做到这一点。因为它要求每个数组具有与manual相同的维度。在你的情况下,它要求每个img具有相同的高度,宽度和长度。我认为你最好的运气是让你的train成为一个列表,并将你的img附加到它。
在我的内存中,将对象追加到列表实际上比连接numpy数组更快。

ryhaxcpt

ryhaxcpt2#

我相信你可以使用np.stack来实现这一点,如果你将你的数组“train”添加到np.stack函数中,并且axis=0,来堆叠所有附加在train数组中的图像。

train = np.stack(train, axis=0)
print(train.shape)

相关问题