筛选列表并获取前N个元素

2024-05-23 17:51:17 发布

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

我不是python的高手,但我需要从数据集中绘制一些图像,我想使用列表理解来实现这一点,但不知道如何实现。所以我使用了while循环,但是访问包含大小为(1080,)的标签的元组时也出现了问题,我得到了如下错误消息:

IndexError: index 1 is out of bounds for axis 0 with size 1

所以在我重塑元组之后,一切都很好。我的代码:

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循环更有效吗?你知道吗


Tags: 数据图像消息列表错误绘制trainplt
1条回答
网友
1楼 · 发布于 2024-05-23 17:51:17

如果您不发布生成Y_train_orig的代码,我们就无法知道它的形状,或者即使它是numpy.ndarray,因此我们无法帮助您进行重塑。你知道吗

关于主要问题:列表理解不适用于传统的循环(尽管如果你真的想,你可以将一些东西组合在一起),而只是将结果收集到一个列表中,可能还应用了一些过滤器。您希望多次执行某些操作(绘制),因此确实应该使用whilefor循环。你知道吗

为完整起见,鉴于我对您的变量了解不多,下面是我编写循环的方法:

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

相关问题 更多 >