2017-04-13 81 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