2016-05-10 6 views
0

У меня есть данные с непрерывной плавающей запятой, начиная от -257,2 до 154,98, Я понятия не имею, как это распределяется. Но я хотел бы, чтобы это было в бункерах - от -270 до -201, -200 до -141, от -140 до -71, -70 до -1, от 0 до 69, от 70 до 139, от 140 до 209Python convert Непрерывные данные в категориальные

есть ли способ сделать это ?, в частности, я высматривая:

data = np.random.rand(10) 
data 
array([ 0.58791019, 0.2385624 , 0.70927668, 0.22916244, 0.87479326, 
     0.49609703, 0.3758358 , 0.35743165, 0.30816457, 0.2018548 ]) 
def GenRangedData(data, min, max, step): 
    #some code 
    no_of_bins = (max - min)/ step 
    bins = [] 
    #some code 
    return bins 

rd = GenRangedData(data, 0, 1, 0.1) 
# should generate: 
rd 
[[], [0.2385624, 0.22916244, 0.2018548], [0.3758358, 0.35743165, 0.30816457], [0.49609703], [0.58791019], [], [0.70927668], [0.87479326]] 

я, очевидно, можно сделать это вручную итерацию по всем номерам, но я ищу, чтобы автоматизировать его, так что мин макс и шаг можно экспериментировать много. Есть ли способ сделать это эффективно?

+0

Не уверен, что вы спрашивая. Таким образом, вы не хотите перебирать «данные» и назначать каждый элемент в соответствующий бит внутри 'GenRangedDate()'? Что вы надеетесь достичь, если не так? – yelsayed

+0

Я ищу библиотечную функцию для этого, итерационный список сам по себе не кажется эффективным .. – Adorn

+0

это операция «O (n)», никакая встроенная функция не может сделать это быстрее, вы просто _have_, чтобы проверить все значения , – yelsayed

ответ

0

Это то, что я мог придумать, я не знаю, если это лучший способ, Если вы думаете, это можно сделать быстрее, мн.ч. обновление/редактировать

def GenRangedData(data, min, max, step): 
    cat_data = [] 
    bins = ((i_max - i_min)/step) + 2 
    for x in range(0, len(data)): 
     temp_data = [] 
     for y in range(0, len(data[x])): 
      for n in range(0, int(bins)): 
       if data[x][y] < (i_min + (n*step)): 
        temp_data.append(n) 
        break 
    cat_data.append(temp_data) 

 Смежные вопросы

  • Нет связанных вопросов^_^