【问题标题】:While Loop in Python - Array ManipulationPython 中的 While 循环 - 数组操作
【发布时间】:2019-03-10 22:26:26
【问题描述】:

我正在编写以下 Python 代码。

我希望完成以下工作:

  1. 创建一个total_fold_array,它将容纳 5 个项目(折叠)
  2. 对于每个折叠,根据我的 for...zip 循环内部的逻辑(我知道这是正确的)从更大的数据集中创建一个数据数组

为了帮助您理解: classes 和 class_weights 返回: [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0][0.14285714 0.14285714 0.14285714 0.14285714 0.14285714 0.14285714 0.14285714]

while count !=6 工作不正常。简而言之,我想要完成的是用 5 个单独的折叠填充 total_fold_array,每个折叠都包含数据集中的许多行。

current_fold_array 的一个示例可能是 [A,B,C,D],所以最终,我有一个 total_fold_array,其中有 5 个单独的折叠,看起来像 [[A,B,C,D,],[A,B,B,C],[A,A,A,A],[B,C,D,D],[B,B,B,C]]

但是,此循环不会这样做。相反,它创建 total_fold_array 的长度与 classes 的长度相同(在本例中为 7),而不是在其中包含 5 个折叠。

我的代码如下:

我目前得到一个包含 7 个项目的 total_fold_array,而它应该包含 5 个。其中的每个项目可以根据需要包含任意数量的项目,但 total_fold_array 的长度应该是 5 个项目。我相信我的代码中存在逻辑错误,我正在寻求帮助。如果我要使用具有 5 个类的数据集,则此方法可以正常工作。

如果我需要更清楚地说明这一点,请告诉我。

【问题讨论】:

  • count = count + 1 是否正确缩进?最后两行的缩进看起来也很可疑。
  • 不确定@wwii。我尝试将它们向上移动 1 层,然后将 total_fold_array 的大小设为 1,所以我不知道这是否有帮助。

标签: python python-3.x numpy for-loop


【解决方案1】:

就在for a_class,a_class_weight in zip(classes, class_weights): 之前,您将total_fold_array 初始化为[]

该循环的执行次数classes 中的元素数量完全相同

该循环的每次迭代都会将curr_fold_array 附加到total_fold_array

这就是为什么在循环结束时,total_fold_array 中的元素数量与 classes 中的元素数量一样多。

您已将所有这些都包含在 while count != 6: 中。这似乎完全没有必要——我认为while 循环将只执行一次。在 while 循环的第二次迭代发生之前,您正在从该函数返回。我的猜测是您引入了while 循环,希望它能够以某种方式将total_fold_array 中的元素数量限制为5。但这不会发生,因为在 while 循环内,for 循环将 total_fold_array 增长到有 7 个元素,这发生在 while 循环的第一次迭代中。

【讨论】:

  • 谢谢,这非常有帮助。您对 while 循环的直觉是正确的。如果我正确理解了您的答案,我需要将整个数组的实例化移动到 while 循环之外,以确保我正确地创建 5 个折叠,对吗?
  • 这真的取决于你打算做什么的一些细节,我没有。如果我要做出一个疯狂的猜测,请尝试将最后四行的缩进减少一个缩进级别(这会将 return 语句从 while 循环中取出,并将 append 语句从 for 循环中取出。保留其余代码,包括 while 循环。也许这会给你你正在寻找的结果 - 但我只是在猜测你的程序目标。
  • 如何改进我的问题以更好地解释我的意图?简而言之,我只需要创建一个包含 5 个元素的数组,其中每个元素本身都是一个数组,它是类循环中的逻辑结果。
  • 我上面提到的建议肯定会确保total_fold_array 有5 个元素。但我不确定的是 中的内容是否正确(与您对该内容的预期一致)。到目前为止,您只声明了total_field_array 应该有 5 个元素,但您没有提到这 5 个元素的内容应该是什么的任何细节。
  • 帖子中描述的类和类权重大小不一,但本质上,它们用于循环遍历大型数据集并将一定数量的元素附加到“折叠”或一个这 5 个元素中的一个。
猜你喜欢
  • 2018-02-25
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 2019-03-05
  • 1970-01-01
  • 2018-07-24
  • 2016-07-23
相关资源
最近更新 更多