Хотя цикл в Python - Манипуляции с массивами - PullRequest
0 голосов
/ 11 марта 2019

Я работаю над следующими кодами Python.

Я надеюсь выполнить следующее:

  1. Создайте total_fold_array, который будет содержать 5 предметов (складок)
  2. Для каждого сгиба создайте массив данных из большего набора данных, основанный на логике (которую я знаю, правильно) внутри моего for...zip цикла

Чтобы помочь вам понять: Возвращает classses и 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 не работает должным образом. Короче говоря, я пытаюсь заполнить total_fold_array 5 отдельными сгибами, каждая из которых содержит ряд строк из набора данных.

Примером 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 сгибов внутри.

Мой код указан ниже:

В настоящее время я получаю total_fold_array, содержащий 7 элементов, тогда как вместо этого он должен содержать 5. Каждый элемент может содержать столько элементов, сколько необходимо, но total_fold_array должен иметь длину 5 элементов. Я считаю, что в моем коде есть логическая ошибка, и мне нужна помощь. Если бы я использовал набор данных с 5 классами, это работает соответствующим образом.

Пожалуйста, дайте мне знать, если мне нужно сделать это яснее.

1 Ответ

1 голос
/ 11 марта 2019

Непосредственно перед 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...