Python 将连续数据转换为分类数据
Python convert Continuous data into categorial
我有一个连续的浮点数数据,范围从-257.2到154.98,
我不知道它是如何分配的。但我希望它在垃圾箱中 - 比如说 -270 到 -201、-200 到 -141、-140 到 -71、-70 到 -1、0 到 69、70 到 139、140 到 209
有没有办法做到这一点?具体来说,我正在寻找:
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]]
我显然可以通过手动遍历所有数字来做到这一点,但我正在寻求自动化,以便可以对 min max 和 step 进行大量试验。有没有办法有效地做到这一点?
这是我能想到的,我不知道这是不是最好的方法,
如果您认为这可以更快地完成,pl update/edit
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)
我有一个连续的浮点数数据,范围从-257.2到154.98, 我不知道它是如何分配的。但我希望它在垃圾箱中 - 比如说 -270 到 -201、-200 到 -141、-140 到 -71、-70 到 -1、0 到 69、70 到 139、140 到 209
有没有办法做到这一点?具体来说,我正在寻找:
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]]
我显然可以通过手动遍历所有数字来做到这一点,但我正在寻求自动化,以便可以对 min max 和 step 进行大量试验。有没有办法有效地做到这一点?
这是我能想到的,我不知道这是不是最好的方法, 如果您认为这可以更快地完成,pl update/edit
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)