Функция возвращает только одну итерацию вместо нескольких. Что не так? - PullRequest
0 голосов
/ 10 апреля 2020

Прежде всего, я новичок, и у меня возникли проблемы с функциями и возвращаемыми значениями. После этого мне нужно выполнить некоторые матричные операции, чтобы получить минимальное значение в правом столбце. Тем не менее, так как я не могу вернуть эти значения (я не мог понять, почему), я не могу выполнять какие-либо операции с ним. Проблема здесь в том, что каждый раз, когда я пытаюсь использовать return, он дает мне только первый или последний ряд матрицы. Если вы можете помочь, я действительно ценю это. Спасибо.

import numpy as np
import pandas as pd
df = pd.read_csv(r"C:\Users\Yunus Özer\Downloads/MA.csv")
df.head()
x = df["x"]
def minreg():
    for k in range(2,16):
        x_pred = np.full(x.shape, np.nan)
        for t in range(k,x.size):
            x_pred[t] = np.mean(x[(t-k):t])
        mape_value=((np.mean(np.abs(x-x_pred)/np.abs(x))*100))
        m=np.array([k,mape_value])
        return m
print(minreg())

1 Ответ

0 голосов
/ 10 апреля 2020
Команда

return m в основном завершает функцию и возвращает m. В результате функция завершается после выполнения первого l oop. Итак, во-первых, вам нужно позвонить return после того, как закончится l oop. Во-вторых, вам нужно поместить каждое значение m, сгенерированное для l oop, в массив, чтобы сохранить их и вернуть этот массив.

import numpy as np
import pandas as pd
df = pd.read_csv(r"C:\Users\Yunus Özer\Downloads/MA.csv")
df.head()
x = df["x"]
def minreg():
    m_arr = []
    for k in range(2,16):
        x_pred = np.full(x.shape, np.nan)
        for t in range(k,x.size):
            x_pred[t] = np.mean(x[(t-k):t])
        mape_value=((np.mean(np.abs(x-x_pred)/np.abs(x))*100))
        m_arr.append(np.array([k,mape_value]))
    return m_arr
print(minreg())
...