我在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)應該這樣做,但請不要将更多問題作為評論釋出。先搜尋答案,如果找不到,然後将其作為新問題釋出,這将幫助其他人尋找同一問題的答案。