这个link表明我们可以使用Python列表向其中添加元素,并使用np.array
将其转换为numpy数组,其长度未知,如下所示:
a = []
for x in y:
a.append(x)
a = np.array(a)
假设x
是numpy.ndarray
形状(h,w),但h和w未知,我们如何在循环中将元素添加到ndarray a
的第二轴make a
变为(h,w,d),其中d是迭代次数?
我知道我们可以使用dstack
将元素添加到一起(h,w,d),但我不太清楚如何在循环中执行此操作。
答案 0 :(得分:1)
您可以执行类似的操作,但使用x
作为2D numpy数组。也就是说,如果您未提前知道数组的数量,则可以在列表中收集它们,然后一步将它们转换为单个3D数组。代码看起来与您的示例非常相似:
gen2d = (i*np.ones((2,2)) for i in range(random.randint(1, 10))) # a generator of unknown N
a = []
for x in gen2d:
a.append(x)
a = np.dstack(a)
a.shape # (2, 2, 7)