gpt4 book ai didi

Python np.asarray 不返回真实形状

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:37 24 4
gpt4 key购买 nike

我在原始表的两个子表上旋转一个循环。

当我开始循环并检查形状时,我得到 (1008,),而形状必须是 (1008,168,252,3)。我的循环有问题吗?

train_images2 = []
for i in range(len(train_2)):
im = process_image(Image.open(train_2['Path'][i]))
train_images2.append(im)
train_images2 = np.asarray(train_images2)

最佳答案

问题是您的 process_image() 函数返回标量而不是处理后的图像(即形状为 (168,252,3) 的 3D 数组)。因此,变量 im 只是一个标量。因此,您得到的数组 train_images2 是一维数组。下面是一个人为的示例来说明这一点:

In [59]: train_2 = range(1008)
In [65]: train_images2 = []

In [66]: for i in range(len(train_2)):
...: im = np.random.random_sample()
...: train_images2.append(im)
...: train_images2 = np.asarray(train_images2)
...:

In [67]: train_images2.shape
Out[67]: (1008,)
<小时/>

因此,解决方法是您应该确保 process_image() 函数返回一个 3D 数组,如下面的示例所示:

In [58]: train_images2 = []
In [59]: train_2 = range(1008)

In [60]: for i in range(len(train_2)):
...: im = np.random.random_sample((168,252,3))
...: train_images2.append(im)
...: train_images2 = np.asarray(train_images2)
...:

# indeed a 4D array as you expected
In [61]: train_images2.shape
Out[61]: (1008, 168, 252, 3)

关于Python np.asarray 不返回真实形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55669882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com