Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2017 15:51:53

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

Добрый день

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

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


и записывать их в соответсвующие ячейки

Отредактировано sl0w (Сен. 9, 2017 15:52:38)

Офлайн

#2 Сен. 9, 2017 16:02:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

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



Офлайн

#3 Сен. 9, 2017 16:34:17

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

ахах)

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

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

(2+3+4)/3

…..

(8+9+10)/3

Офлайн

#4 Сен. 9, 2017 16:38:01

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

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



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Сен. 9, 2017 16:53:27

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

не совсем так

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

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

и таких должно быть около 1000/200

Офлайн

#6 Сен. 9, 2017 17:03:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

решается sql-выражением
row_num + % operator + grop by



Офлайн

#7 Сен. 9, 2017 17:21:49

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

у меня все в питоне, в пандасе

изначально все было в экселе, но стало слишком медленно работать, тем более переход на убунту ознаменовал отсутствие экселя как такового (хоть он и есть под вайном но нагрузку вообще не тянет)

Офлайн

#8 Сен. 9, 2017 17:23:52

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

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



Офлайн

#9 Сен. 9, 2017 18:08:13

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

я смотрел на данные в пандасе и представлял перед собой операции экселя

с точки зрения питона, у меня есть список данных содержащих

 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
постарался объяснить как смог со своими плачевными знаниями питона

Отредактировано sl0w (Сен. 9, 2017 18:08:40)

Офлайн

#10 Сен. 9, 2017 18:43:08

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Создание и запись переменных со сдвигом по строке

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




Отредактировано doza_and (Сен. 9, 2017 18:53:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version