我是python的noobie,但我需要从数据集中绘制一些图像,并且我想为此使用列表推导功能,但不知道如何操作。因此,我使用了while
循环,但是也存在访问包含大小为(1080,)的标签的元组的问题,并且出现如下错误消息:
IndexError:索引1超出了大小为1的轴0的边界
因此,在我重整了元组之后,一切都很好。我的代码:
i, j = 0, 0
y = np.reshape(Y_train_orig, (1080))
while (j < 5):
if y[i] == 0 :
plt.imshow(X_train_orig[i])
plt.show()
j += 1
i += 1
所以我想知道是否真的需要重塑它,以及是否可以避免使用循环而使用列表理解。会比我的while
循环更有效吗?
答案 0 :(得分:0)
如果没有发布生成Y_train_orig
的代码,我们将无法知道其形状,甚至是numpy.ndarray
,因此我们无法帮助您进行重塑。
关于主要问题:列表推导方法不适合常规循环(尽管您可以如果确实愿意,可以将某些内容一起砍掉),而只能将结果收集到列表中,可能使用一些过滤器作为好。您想多次执行某些操作(绘图),因此您确实应该使用while
或for
循环。
出于完整性考虑,鉴于我不太了解您的变量,这是我编写循环的方法:
count = 0
for y_i, x in zip(y, X_train_orig):
if y_i == 0:
plt.imshow(x)
plt.show()
if count == 5:
break
count += 1