Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2015 12:51:05

ElfStone
Зарегистрирован: 2015-11-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

Всем привет!
Собственно, как сгенерировать последовательность в указанном диапазоне с экспоненциальным шагом? -
Я пробовал использовать numpy:logspace,linspace,arrang. Геометрическую прогрессию сгенерировать вполне реально, но переменного шага добиться не получается.

Спасибо!

Отредактировано ElfStone (Ноя. 14, 2015 12:52:19)

Офлайн

#2 Ноя. 14, 2015 15:06:36

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

Так подойдёт?

>>> import math
>>> map(math.exp, xrange(10))
[1.0, 2.718281828459045, 7.38905609893065, 20.085536923187668, 54.598150033144236, 148.4131591025766, 403.4287934927351, 1096.6331584284
585, 2980.9579870417283, 8103.083927575384]



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Ноя. 14, 2015 15:07:13)

Офлайн

#3 Ноя. 14, 2015 21:48:51

Janko
Зарегистрирован: 2015-11-14
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

Это только в python 2.x будет работать, где есть xrange(). Вот нагуглил такое

Офлайн

#4 Ноя. 14, 2015 22:03:32

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

> Это только в python 2.x будет работать, где есть xrange()

Конечно. В 3.х надо писать range.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Ноя. 14, 2015 23:10:16

Janko
Зарегистрирован: 2015-11-14
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

Ну ок, но range() для другого - он целочисленный тип только принимает

Офлайн

#6 Ноя. 16, 2015 23:35:42

ElfStone
Зарегистрирован: 2015-11-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

map(math.exp, xrange(10))/map(math.exp, range(10)) - конечно красиво, но смысл экспоненциального шага не в том что разность между соседними элементами составляет 2.7 а в том что сам шаг изменяется. Т.е. этот код как раз пример линейного шага и рабочий

Офлайн

#7 Ноя. 17, 2015 04:17:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

ElfStone
Собственно, как сгенерировать последовательность в указанном диапазоне с экспоненциальным шагом?
Приведи пример последовательности и шагов в ней.

ElfStone
но смысл экспоненциального шага не в том что разность между соседними элементами составляет 2.7 а в том что сам шаг изменяется
Неэквидистантный и экспоненциальный - это разные понятия.



Отредактировано py.user.next (Ноя. 17, 2015 04:20:26)

Офлайн

#8 Ноя. 17, 2015 17:29:26

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

ElfStone
Собственно, как сгенерировать последовательность в указанном диапазоне с экспоненциальным шагом?
Сделать точно экспоненциальный шаг не получится - понятно, что шаг в итерациях может быть только целым числом. Но можно легко сделать переменный (или, как вы его называете, “не эквидистантный”) целочисленный шаг, у которого с точностью до округления к ближайшему целому изменение следует экспоненциальному закону:
from math import exp, ceil
X = list(map(lambda i: ceil(exp(i)), range(5)))
Y = list(range(56)) # элементы int в списке только для простоты, вообще можно любые
Z = [] # сюда добавляем элементы из Y, выбирая их с (почти) экспоненциально меняющимся шагом
for i in X:
   Z.append(Y[i])

Офлайн

#9 Ноя. 18, 2015 02:56:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

old_monty
шаг в итерациях может быть только целым числом
Шаг может быть любым числом, хоть комплексным. Ему просто range() не подходит.



Офлайн

#10 Ноя. 18, 2015 09:52:09

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Сгенерирывать массив вещественных с не эквидистантным шагом

> Ну ок, но range() для другого - он целочисленный тип только принимает

А мы ему челочисленный тип и передаём Просто сначала генерим целочисловую последовательность, а потом к ней применяем нужную функцию и получаем то что хотим.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version