Найти - Пользователи
Полная версия: Создание и запись переменных со сдвигом по строке
Начало » Python для новичков » Создание и запись переменных со сдвигом по строке
1 2
sl0w
Добрый день

Хотел бы узнать, как можно вычислять переменные с изменением ячеек расчета по вертикали.

Вот иллюстрация:


и записывать их в соответсвующие ячейки
FishHook
ставлю бутылку пива первому, кто поймет что за херня тут написана
sl0w
ахах)

мне нужно посчитать среднее от нескольки сотен чисел с постоянным смещением вниз.
например есть столбей из числел 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

мне нужно посчитать:
(1+2+3) /3

(2+3+4)/3

…..

(8+9+10)/3
JOHN_16
Давай повангую. Дан список из 3 элементов. Нужен алгоритм который расширить его до длины N заполняя каждый новый элемент средним значением 3 предыдущих. В голове крутится название “алгоритм скользящего среднего с наполнением”, но думаю что это не совсем то (давно это было, забываю старые вещи)
sl0w
не совсем так

есть столбец с данными (их больше тысячи) и для каждых 200 данных нужно посчитать среднее арифметическое и записать в соседний столбец

например
первый расчет: (1+2+3+4….+200)/200
второй расчет: (2+3+4…+201)200

и таких должно быть около 1000/200
FishHook
решается sql-выражением
row_num + % operator + grop by
sl0w
у меня все в питоне, в пандасе

изначально все было в экселе, но стало слишком медленно работать, тем более переход на убунту ознаменовал отсутствие экселя как такового (хоть он и есть под вайном но нагрузку вообще не тянет)
doza_and
FishHook
решается sql-выражением
У него исходно numpy. Чего хочет непонятно. Похоже хочет
 a.reshape((-1,200)).mean(axis=1)
sl0w
как можно вычислять переменные с изменением ячеек расчета
Вам надо выдавливать из себя exel по каплям. Какие такие ячейки? В numpy нет понятия ячееек. Как его поместить рядом если у него размерность другая?
sl0w
я смотрел на данные в пандасе и представлял перед собой операции экселя

с точки зрения питона, у меня есть список данных содержащих
 X = [ 1, 2 , 3 , 4,  5, 6 ..... , 1000].

Мне нужно для всех значений этого списка найти среднее значении по 200 числам и записать в соседний столбец. Другими словами это будет выглядеть примерно так

 sum(X[0:200])/200
sum(X[1:201])/200
sum(X[2:202])/200
sum(X[3:203])/200
и данные показатели нужно записать в новый список , где первые 200 значений с значениям non, а остальные расчетные значения.

например
 1-199 значение: y[0:199] == NaN
y[200] = sum(X[0:200])/200
постарался объяснить как смог со своими плачевными знаниями питона
doza_and
sl0w
и представлял перед собой операции экселя
В этом и ошибка. python и exel имеют совершенно разные модели представления данных и разные модели вычислений. Чем раньше поймете тем проще будет работать.
sl0w
и записать в соседний столбец.
:) Тут как в матрице. НЕТ НИКАКИХ СТОЛБЦОВ. В numpy используется модель вычислений на многомерных массивах, которую exel даже близко не может выразить. Я заостряю на этом внимание поскольку если вы будете делать все как в экселе то получите невразумительную неэффективную ерунду, не потому что exel плох. Просто совершенно разные подходы…
То что вы ищете в математике называется свертка. И очевидно в numpy это делается в одну строчку.
https://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html
Для многомерного случая есть
https://docs.scipy.org/doc/numpy/reference/generated/numpy.ma.average.html

Вот тут разжевано
https://gordoncluster.wordpress.com/2014/02/13/python-numpy-how-to-generate-moving-averages-efficiently-part-2/

Если грузите данные в pandas то не обязательно их извлекать. В ней тоже есть скользящее среднее
http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.rolling_mean.html


This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB