ValueError: операнды не могут быть переданы вместе с формами (3,) (2,) - PullRequest
0 голосов
/ 12 марта 2020

У меня есть следующий сценарий:

  • У меня есть список списка чисел, например:
day_list = [
  [317, 331, 344],
  [305, 326, 340],
  [317],
  [290, 323],
  [311, 325, 345],
  [289, 303, 323],
  [274, 281, 294, 325]
  ...
]
  • Я хочу вычесть предыдущий элемент из следующего элемента каждого внутреннего списка, так что добавление результатов в список «результатов». Пример:

Первый список: [317, 331, 344]

331 - 317 = 14
344 - 331 = 13

Список результатов: [14, 13]

Мой код:

result = []
sub_result = []
for index, i in enumerate(day_list):
  if len(i) > 1:
    result = []
    for j in range(len(i)-1):
        subtract = np.subtract(np.array(day_list[index][j+1]), np.array(day_list[index][j]))
        result.append(subtract)
    sub_result.append(result)
  else:
    sub_result.append(0)

Я получаю следующую ошибку:

ValueError: операнды не могут передаваться вместе с формами (3,) (2,)

Я вижу, что это связано с частью кода, в которой я изменяю позицию массива (j+1). И я понятия не имею, как исправить код и получить правильный результат.

Я уже прочитал кучу похожих вопросов, но не смог найти решение.

Не могли бы вы, пожалуйста помогите?

Tks

==================================

Добавление дополнительных сведений:

Я создаю список из следующего фрейма данных:


        key day_list
    0   1078|11498  [317, 331, 344]
    1   1078|11749  [305, 326, 340]
    2   1078|11778  [317]
    3   1078|13974  [290, 323]
    4   1078|15866  [311, 325, 345]
    ... ... ...
    25337   96|426860   [302, 326]
    25338   96|443060   [310]
    25339   96|445134   [301, 303, 310]
    25340   96|445237   [301, 309, 310, 324]
    25341   96|447416   [301, 310]
    25342 rows × 2 columns

    def load_data(data):
        df = pd.DataFrame(data)
        day_list = []
        for i in range(len(df)):
            day_list.append(df.day_list.loc[i])
        return day_list

    day_list = load_data(df_dayofyear)

1 Ответ

0 голосов
/ 12 марта 2020

Возможно, это была ошибка отступа в коде, который я исправил, я попробовал этот код сейчас и не получаю никакой ошибки:

day_list = [[317, 331, 344],
[305, 326, 340],
[317],
[290, 323],
[311, 325, 345],
[289, 303, 323]]
result = []
sub_result = []
for index, i in enumerate(day_list):
    if len(i) > 1:
        result = []
        for j in range(len(i)-1):
            subtract = np.subtract(np.array(day_list[index][j+1]), np.array(day_list[index][j]))
            result.append(subtract)
        sub_result.append(result)
    else:
        sub_result.append(0)

Вывод:

[[14, 13], [21, 14], 0, [33], [14, 20], [14, 20]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...