средняя функция двух поплавков в python - PullRequest
0 голосов
/ 21 февраля 2020

Мы хотим оптимизировать некоторое кодирование в Python, и в этом случае мы смотрим на наше «ленивое» кодирование. Чтобы оптимизировать нашу программу, мы хотим использовать классы и функции! (мы новички в python), и в этом случае мы создали класс с именем Update:

class Update:
    def __init__(self, first, last):
        self.first = first
        self.last = last

    def mean(self):
        print (self.first, self.last)
        return ((self.first + self.last) / 2)

Что мы хотим сделать с нашей программой, так это сгенерировать 3x новых средних значения из из 2 поплавков.

например, мы начинаем с:

first[-1] = 33.31
last[-1] = 29.81

average = 31.56

, затем мы хотим взять верхнее среднее:

(29.81+31.56)/2 = 30.69

Нижнее среднее:

(33.31+31.56)/2 = 32.44

Наконец, нам нужен список, показывающий: {33.31, 32.44, 31.56, 30.69, 29.81}

К сожалению, наша средняя функция не работает должным образом, и когда мы запускаем нашу программу, мы получаем следующую ошибку:

/home/user/.local/lib/python3.6/site-packages/numpy/core/fromnumeric.py:3257: RuntimeWarning: Mean of empty slice.
  out=out, **kwargs)
/home/user/.local/lib/python3.6/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars
  ret = ret.dtype.type(ret / rcount)

Хорошо, вот что мы делаем. Имейте в виду, что мы застряли на среднем из наших двух значений, а затем после того, как мы сможем найти верхний и нижний средний. Комментированные строки кода - это то, как программа была изначально запрограммирована, и то, что мы хотим оптимизировать.

upd = Update(first[-1], last[-1]) # first = 33.31 and last = 29.81

# f = first[-1]
# l = last[-1]

mean_list = []

# mean_list.append(f)
# mean_list.append(l)

first_mean = []
third_mean = []

# mean = np.mean(mean_list)

# first_mean.append(f)
# third_mean.append(l)

first_mean.append(upd.first)
third_mean.append(upd.last)

# first_mean.append(mean)
# third_mean.append(mean)

mean = upd.mean()

first_mean.append(mean)
third_mean.append(mean)

a = np.mean(first_mean).round(2)
b = np.mean(third_mean).round(2)
mean = np.mean(mean_list).round(2)

1 Ответ

1 голос
/ 21 февраля 2020

Ваша непосредственная проблема - пустая переменная mean_list. Для выполнения общей задачи я предлагаю вам взглянуть на numpy пространство строк .

import numpy as np
first = 33.31
last = 29.81
means = np.linspace(first, last, 5)
print(means)

> [33.31  32.435 31.56  30.685 29.81 ]

. Вы можете естественным образом использовать это из вашего метода класса.

...