Хотите объединить случайные равномерно сгенерированные значения - PullRequest
0 голосов
/ 14 мая 2018

У меня следующий код, и я хочу написать для него функцию.выходные данные должны быть x как датафрейм, а y как ряд, достаточно даже фрейма данных, имеющего x и y в качестве столбцов.

x = np.arange(0,50)
x = pd.DataFrame({'x':x})

# just random uniform distributions in differnt range

y1 = np.random.uniform(10,15,10)
y2 = np.random.uniform(20,25,10)
y3 = np.random.uniform(0,5,10)
y4 = np.random.uniform(30,32,10)
y5 = np.random.uniform(13,17,10)

y = np.concatenate((y1,y2,y3,y4,y5))
y = y[:,None]

Я пытался выполнить следующее, но он не возвращает значения от y1 до y5.Мой код:

x = np.arange(0,50)
x = pd.DataFrame({'x':x})
def colm(p,q):
    s, t = p, q
    a = ['y1', 'y2', 'y3', 'y4', 'y5']
    for i in a:
        i = np.random.uniform(s, t, 10)
        s, t = s+10, t+10
        return i

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Я получил его после некоторой попытки найти то, что искал:

x = np.arange(0,50)
x = pd.DataFrame({'x':x})
def colm(p,q):
    s, t = p, q
    z = []
    a = ['y1', 'y2', 'y3', 'y4', 'y5']
    for i in a:
        i = np.random.uniform(s, t, 10)
        s, t = s+10, t+10
        z.append(i)
    y = np.concatenate(z)
    return pd.Series(y)

Спасибо всем за проявленный интерес ....!

0 голосов
/ 14 мая 2018

Попробуйте изменить функцию следующим образом:

def colm(p, q, chunk_len=10):
    x = np.arange(0,5 * chunk_len)
    x = pd.DataFrame({'x':x})

    # just random uniform distributions in differnt range

    ys = [np.random.uniform(p_, q_, chunk_len) for p_, q_ in zip(p, q)]

    y = np.concatenate(ys)

    return x, pd.Series(y)

Теперь вы можете использовать ее как

x, y = colm([10, 20, 0, 30, 13], [15, 25, 5, 13, 17])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...