我是编程语言的新手,所以请在Python上帮助我解决这个问题。
我得到了这样的excel数据:
data1=[[161.0, 48.0], [160.0, 96.0], [163.0, 61.0], [160.0, 115.0], [173.0, 105.0]]
data2=[[180.0, 91.0], [180.0, 80.0], [174.0, 94.0], [170.0, 101.0], [172.0, 78.0]]
假设我只想关心每个数据的X点,所以我得到了这个:
unique_X1=[160, 161, 163, 173]
unique_X2=[170, 172, 174, 180]
然后,我可以将联合设为X:
set([160, 161, 163, 170, **172**, **173**, 174, 180])
所以,我现在要做的是,制作一套"切点"如果联合集中的i和i + 1来自不同的数据集(unique_X1或unique_X2)。并且切点的值将是(i + [i + 1])/ 2
例如,172来自unique_X2,173来自unique_X1,因此切割点为(172 + 173)/2=172.5
这是我到目前为止所做的事情,如果有人可以帮助我完成剩下的工作,我将非常感激。我相信我必须使用循环,但我不知道如何。提前谢谢
import xlrd
#getting data
book = xlrd.open_workbook('sampledata1.xlsx')
sheet1 = book.sheet_by_name('Female')
sheet2 = book.sheet_by_name('Male')
data1 = [[sheet1.cell_value(r, c) for c in range(sheet1.ncols)] for r in range(sheet1.nrows)]
data2 = [[sheet2.cell_value(r, c) for c in range(sheet2.ncols)] for r in range(sheet2.nrows)]
print data1
print data2
X1=[int(i[0]) for i in data1]
X2=[int(i[0]) for i in data2]
# print X1
# print X2
#collecting same points
def unique(X1):
return list(set(X1))
# print unique(X1)
def unique(X2):
return list(set(X2))
# print unique(X2)
#sorting data
sort_unique_X1 = sorted(unique(X1))
sort_unique_X2 = sorted(unique(X2))
print sort_unique_X1
print sort_unique_X2
#union X1 and X2
X=set(unique(X1)).union(unique(X2))
print X
#generating cut points
# cut_X = []
答案 0 :(得分:0)
试试这个:
cut_X = []
for i,j in zip(X,X[1:]):
if i in unique_X1 and j in unique_X2:
cut_X.append(0.5*(i+j))
elif i in unique_X2 and j in unique_X1:
cut_X.append(0.5*(i+j))
目前的数字print cut_X
应生成[166.5, 172.5, 173.5]