Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环将属性与python中的相应值对齐_Python_Loops - Fatal编程技术网

For循环将属性与python中的相应值对齐

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循环,但将属性

有两个列表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”行中显示错误:“。如何将值与其对应的属性(列)位置对齐

# 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):