我有一个有效的矩阵保存为一个CSV文件。我们把这个矩阵叫做“X”。
我需要做的是取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的值为任何值,则只需填充正整数和负整数值,用逗号分隔。
发布于 2017-04-13 16:18:16
您的CSV包含一个不能解析为int的空单元格。
不使用csv.reader,您可以使用让numpy直接读取CSV,它还将为您处理这些空的或无效的单元格,而不会引发错误:
X = numpy.genfromtxt('1.csv', dtype=int, delimiter=',', filling_values=0)
# compute the matrix multiplication.
result = X.dot(X.T)(这里我使用filling_values=0将所有空单元格替换为0。)
使用numpy.savetxt将数组保存到CSV中:
numpy.savetxt('2.csv', result, fmt='%d', delimiter=',')(如果不提供fmt,则使用科学符号编写数字。)
https://stackoverflow.com/questions/43397091
复制相似问题