我在Excel电子表格中有这个数据集,我已经转换成一个csv文件供python阅读:
1
2
3
4
5
6
7
8
9
10
111 5 0 1 3 2 1 18 30 50 13 12 24 1
0 1 0 0 1 1 1 10 10 12 10 6 16 -1
0 7 0 0 4 4 1 21 30 46 19 11 25 1
0 1 0 0 1 1 1 2 4 3 4 2 5 -1
0 1 0 0 1 1 1 4 4 7 3 6 6 -1
0 1 0 0 1 1 1 3 3 3 3 3 4 -1
2 1 0 0 1 1 1 8 7 12 5 5 12 -1
2 5 0 0 2 2 1 24 20 45 14 12 28 -1
2 5 0 0 3 3 1 14 17 21 9 12 18 -1
0 5 0 0 2 2 1 17 12 25 8 13 19 1
23 25 0 22 13 12 11 112 125 240 39 27 165 1
因此,我需要一个python格式的输出文件,它以列表形式打印,而不使用0。换句话说,每一行或每一列都不应该有任何0。请看下面的示例格式。
1
2
3
4
5
6
7
8
9+1 1:0.708333 2:1 3:1 4:-0.320755 5:-0.105023 6:-1 7:1 8:-0.419847 9:-1 10:-0.225806 12:1 13:-1
-1 1:0.583333 2:-1 3:0.333333 4:-0.603774 5:1 6:-1 7:1 8:0.358779 9:-1 10:-0.483871 12:-1 13:1
+1 1:0.166667 2:1 3:-0.333333 4:-0.433962 5:-0.383562 6:-1 7:-1 8:0.0687023 9:-1 10:-0.903226 11:-1 12:-1 13:1
-1 1:0.458333 2:1 3:1 4:-0.358491 5:-0.374429 6:-1 7:-1 8:-0.480916 9:1 10:-0.935484 12:-0.333333 13:1
-1 1:0.875 2:-1 3:-0.333333 4:-0.509434 5:-0.347032 6:-1 7:1 8:-0.236641 9:1 10:-0.935484 11:-1 12:-0.333333 13:-1
-1 1:0.5 2:1 3:1 4:-0.509434 5:-0.767123 6:-1 7:-1 8:0.0534351 9:-1 10:-0.870968 11:-1 12:-1 13:1
+1 1:0.125 2:1 3:0.333333 4:-0.320755 5:-0.406393 6:1 7:1 8:0.0839695 9:1 10:-0.806452 12:-0.333333 13:0.5
+1 1:0.25 2:1 3:1 4:-0.698113 5:-0.484018 6:-1 7:1 8:0.0839695 9:1 10:-0.612903 12:-0.333333 13:1
+1 1:0.291667 2:1 3:1 4:-0.132075 5:-0.237443 6:-1 7:1 8:0.51145 9:-1 10:-0.612903 12:0.333333 13:1
号
编辑:
导入csvlist_new=[]
将open("testingseta.csv")作为csvfile:
1
2
3
4
5for row in csv.reader(csvfile):
row.insert(0, row.pop())
list_new.append(row)
list_new.pop(0)
打印列表新建
他们自己没有零。这就是我目前为止所拥有的。请帮忙。谢谢您
如何从输入到输出?他们看起来和我完全无关。
这是什么类型的输出?只是一根纯的原始绳子?二维列表?
有一个名为csv"import csv"的python输入模块,它允许python读取电子表格。这是我的代码atm:import csv list_new=[]with open('testingseta.csv')as csvfile:for row in csv.reader(csvfile):row.insert(0,row.pop())list_new.append(row)list_new.pop(0)print list_new
扩展我的想象力,我想会发生什么,"输入"实际上是数据在Excel中打开csv文件时的外观(因为我看不到任何逗号),当实际数据导入到python时,它显示数字是浮动的而不是整数?
如何在这里正确地复制我的python代码?
为了回答您的问题,我们使用的例子是浮动的,但我正在做的是整数。不确定这是否重要。
到目前为止,我已经包含了我的代码,希望能有所帮助。
猜猜你想干什么
如果您想让第二个文件格式(按比例缩放的libsvm输入)不带零,而svm缩放不打印零值,则可以安全地执行此操作。唯一的缺点是文件太大。
如果确实要从缩放的libsvm输入中删除零,请注意保留特征号,即1 1:0.5 2:0 3:-0.5将导致1 1:0.5 3:-0.5。
如果您想从第一个文件格式中删除零(未缩放的特征向量),这显然是错误的,因为缩放值可能与零不同。
insert(0,row.pop())实际上是将列表的最后一个元素移动到第一个元素,并将列表的其余部分右移。另外,list_new.pop(0)正在删除刚刚插入的元素。我建议您放置一些打印语句来查看您的代码在每个步骤中都在做什么:
1
2
3
4
5
6
7
8
9
10
11
12import csv
list_new = []
with open('testingSeta.csv') as csvfile:
for row in csv.reader(csvfile):
print row
row.insert(0, row.pop())
print row
list_new.append(row)
print list_new
list_new.pop(0)
print list_new
print list_new
要删除列表行中出现的"0",可以执行以下操作:
1
2
3
4
5
6
7
8
9
10import csv
list_new = []
with open('testingSeta.csv') as csvfile:
for row in csv.reader(csvfile):
print row
while '0' in row: row.remove('0')
print row
list_new.append(row)
print list_new
for row in list_new: print(row)
号
谢谢你的回复。但我想知道的是如何从列表中删除零。谢谢
我已经用一个可能解决你问题的方法编辑了答案。
这个解决方案工作得很好。谢谢,非常感谢。你能帮忙把一个列表在一个列表中分开,以便它一行一行地显示每个列表吗?
这是运行程序时打印的内容。1、1、1、1、1、5、1、1、1、1、1、1、1、1、1、1、10、10、10、12、10、6、6、16"],1、1、1、1、1、1、1、1、1、1、5、5、1、1、1、5、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、1、13、12、12、24"],,,,[-1、1、1、1、1、1、1、1、1、1、10、10、10、10、6、6、16"],,,,-1、1、1、1、1、1、1、1、1、,'3','3'、'3'、'3'、'3'、'4']、['-1'、'2'、'1'、'1'、'1'、'8'、'7'、'12'、'5'、'5'、'12']
我已经编辑了代码,用一次打印一行。
当我运行代码在一个新的Excel电子表格中打开数据时,头仍然会出现,但是当我运行它时,头不会出现在python程序中。我似乎找不到合适的密码。
如何打印,使每个值之间没有逗号。你能帮我吗?
打印""。Join(Row)应该这样做,但请不要将更多问题作为评论发布。先搜索答案,如果找不到,然后将其作为新问题发布,这将帮助其他人寻找同一问题的答案。