For循环将属性与python中的相应值对齐
有两个列表sample_attr和sample_val存储列的位置和每列的值。原始数据显示第1行(1:100 3:250 8:50 12:40,…531:300)。共有216个样本,每个样本有531个属性。我首先拆分属性及其值,例如:sample_attr[0]->[1,3,8,12,…531],sample_val[0]->[100250,50,40,…300]。每个示例属性列表存储属性位置(第1列,第3列..531列),每个示例属性列表存储相应属性位置的值。我想执行下面的for循环,但将属性值排列在相应的属性位置不起作用:它在“sample_attr中的sample1和sample_val中的sample2”行中显示错误:“。如何将值与其对应的属性(列)位置对齐For循环将属性与python中的相应值对齐,python,loops,Python,Loops,有两个列表sample_attr和sample_val存储列的位置和每列的值。原始数据显示第1行(1:100 3:250 8:50 12:40,…531:300)。共有216个样本,每个样本有531个属性。我首先拆分属性及其值,例如:sample_attr[0]->[1,3,8,12,…531],sample_val[0]->[100250,50,40,…300]。每个示例属性列表存储属性位置(第1列,第3列..531列),每个示例属性列表存储相应属性位置的值。我想执行下面的for循环,但将属性
# adjust dimension
for sample1 in sample_attr and sample2 in sample_val:
attr = [0]*maxdim
s=0
for i in sample1:
attr[i-1] = sample2[s]
s=s+1
x.append(attr)
#整个代码如下:
将fileinput.input(files=('C:/Users/Documents/dataset.txt')作为f:
对于f中的行:
datalist.append(line.split())
对于数据列表中的exe:
exe_attr=[]
exe_val=[]
对于范围(0,len(exe))中的i:
exe_attr.append(int(exe[i].split(':',1)[0]))
exe_val.append(int(exe[i].split(':',1)[1]))
示例属性附加(exe属性)
示例值追加(exe值)
maxdim=0
对于样本属性中的样本:
如果maxdim<样本[-1]:
maxdim=样本[-1]
maxdim=maxdim+1
x=[]
#调整尺寸A不一致
对于样本属性中的样本1和样本值中的样本2:
attr=[0]*maxdim
s=0
对于样本1中的i:
attr[i-1]=样本2[s]
s=s+1
x、 附加(attr)
首先,我不完全确定您希望它如何工作:
for sample1 in sample_attr and sample2 in sample_val:
因为您提供了一个布尔表达式,期望在其中给出一个iterable。我觉得你想要的更像
for sample1, sample2 in zip(sample_attr, sample_val):
但是,最好保持这种更“自然”的数据结构。pandas
包是专门为处理数据帧而构建的;查看可用的文档和教程,更不用说这里关于堆栈溢出的数千个示例了。我强烈怀疑您可以备份一个步骤并将YRU数据直接读取到数据帧中
for sample1, sample2 in zip(sample_attr, sample_val):