2015-11-16 11 views
0

Я хочу найти квантили элемента n в подсписках.Python: quantile для списка подписок

Скажем, у меня есть (на самом деле это гораздо больше):

List = [[[1,3,0,1], [1,2,0,1], [1,3,0 , 1]], [[2,2,1,0], [2,2,1,0], [2,2,1,0]]]

Я хочу, чтобы найти квантили (например, numpy.percentile) для 2-го элемента в подсписке [[1,3,1,1], [1,2,0,1], [9,3,2,1]] и в [[1, 2,3,4], [0,2,0,0], [1,2,2,2]], а затем я хочу выполнить максимальную функцию, поэтому я знаю, какая подгруппа из этих двух имеет наивысший выбранный квантиль, и я также хочу знать значения, которые имеют другие 3 постоянных значения (1: st, 3: rd и 4: th элементы).

+0

Привет! Добро пожаловать в StackOverflow! Потратьте минутку, чтобы увидеть раздел [как спросить] (http://stackoverflow.com/help/how-to-ask)! Пользователи SO ожидают, что участники опроса придумают какой-то код для просмотра ... – jkalden

ответ

0

Вот один из возможных способов. Предполагая, что (как в вашем вопросе)

List=[[[1,3,0,1],[1,2,0,1],[1,3,0,1]],[[2,2,1,0],[2,2,1,0],[2,2,1,0]]] 

Тогда можно преобразовать каждый первый кортеж уровня к Numpy матрицы первой, что позволяет легко выбрать 2-й столбец, к которому можно применить функцию numpy.percentile. Вскоре,

import numpy as np 
quartiles = [np.percentile(np.matrix(l)[:,1], 25) for l in List] 

, который дает в качестве вывода квартили (25-процентили) каждого кортежа первого уровня:

[2.5, 2.0] 

один, то можно найти максимум с numpy.argmax:

am = np.argmax(quartiles) 

, а затем использовать его для выбора других 3 постоянных элементов

other3 = [List[am][0][0], List[am][0][2], List[am][0][3]]