2017-04-13 94 views
0

我有什麼有效的矩陣保存爲CSV文件。我們稱這個矩陣爲'X'。在Python中移位和相乘矩陣

我需要做的是將csv文件讀取爲矩陣,找到它的轉置,然後將它們相乘。目前,我有以下代碼:

import numpy 
import csv 
reader = csv.reader(open("votes.csv","rb"), delimiter=",") 
text = list(reader) 
result = numpy.matrix(text).astype(int) 
print result 

這僅僅是應該告訴我的csv文件作爲整數矩陣但即使拋出以下錯誤:

result = numpy.matrix(text).astype(int) 
ValueError: invalid literal for int() with base 10: '' 
莫非

任何人的幫助我和這個?

如果它有任何值,csv只是用正整數和負整數值填充,用逗號分隔。

回答

2

您的CSV文件包含空單元格,無法解析爲int

而不是使用csv.reader,你可以let numpy to read the CSV directly,這也將爲您處理這些空的或無效的細胞不提高錯誤:(這裏我用filling_values=00以全部替換爲空細胞)

X = numpy.genfromtxt('1.csv', dtype=int, delimiter=',', filling_values=0) 

# compute the matrix multiplication. 
result = X.dot(X.T) 

使用numpy.savetxt到陣列保存到CSV:

numpy.savetxt('2.csv', result, fmt='%d', delimiter=',') 

(如果您沒有提供fmt,將使用科學記數法編寫這些數字。)

+0

非常感謝。我跑numpy.shape(結果),它給(150L,150L),這正是我所期待的。 有沒有辦法將矩陣變回csv? – modestmotion

+0

@modestmotion查看更新。 – kennytm

+0

非常完美!非常感謝,你是明星。我會將此標記爲已回答。 – modestmotion