Я ищу ответ на следующую проблему:
Я хочу создать массив numpy, в котором хранятся все пересечения и наклоны. Наклон - это увеличение means
над years
. Я нашел несколько способов вычислить перехват / наклон, но мне очень не хватает ссылки, чтобы получить их в новом массиве (я новичок в Numpy, поэтому logi c медленно добирается туда, но теперь я был застрял на день ..)
Итак ... У меня есть массив, который имеет такую структуру:
x = np.array([(2000, 'A', '1',5), (2001, 'A', '1', 10),
(2003, 'A', '1',15), (2004, 'A', '1', 20),
(2000, 'A', '2',1), (2001, 'A', '2', 2),
(2002, 'A', '2', 3), (2003, 'A', '2', 4)],
dtype=[('year', 'i4'), ('group1', 'U2'), ('group2', 'U2'), ('means', 'i2')])
И я хотел бы получить такой массив:
>desired_array
array([('A', '1', 5, 5),
('A', '2', 1, 1)],
dtype=[('group1', '<U2'), ('group2', '<U2'), ('intercept', '<i2'), ('slope', '<i2')])
Я дошел до этого момента:
ans, indices = np.unique(x[['group1', 'group2']], return_inverse=True)
desired_array = np.empty(2, dtype=[('group1', 'U2'), ('group2', 'U2'), ('intercept', '<f8'),
('slope', '<f8')])
desired_array['group1'] = ans['group1']
desired_array['group2'] = ans['group2']
x = x[x['year'] == 2000]
desired_array['intercept'] = x['means']
это немного грубо, и я все еще могу улучшить, но главный вопрос для меня, где я застреваю, - как добавить наклон для каждой регрессии строку в массив.
Было бы здорово, если бы мне кто-нибудь помог :)