我有一个文本文件包含一个列表(#lines = 1137)的矢量(都等于大小= 1137),我试图将此列表转换为1137 * 1137矩阵。我用numpy创建了一个空矩阵。但是,当我使用以下代码读取文件之后的问题,所述载体被视为字符序列,而不是作为一个载体或阵列从文本文件创建n * n矩阵包含Python列表中的列表
myMtrx = np.empty((1137,1137))
f = open("text.txt", "r")
for vector in f:
print len(vector)
arrayF.append(vector.rstrip())
我认识到,通过打印我们每个矢量的长度,其是根据位数来计算的,而不是该向量中的元素。在文本文件中的矢量看起来像
[99.25, 14.74, 26.12, 20.91, 37.14, 79.03, 17.68, 28.4, ...., 0]
所以当我打印print arrayF[0][0]
我收到[
,我需要输出为第一载体,它是99.25的第1个要素。
我尝试了几种使用numpy的方法,并将文本文件写入CSV但没有任何效果,请您帮助我解决此问题。您可以通过以下链接访问文本文件,让您了解其结构。 text.txt
当你说'for vector in f'时,'vector'变量传递给你的代码不是一个向量,而是整个文件的一行(作为一个字符串)。你想做一些类似'for line in f'的代码,并在循环中编写代码将每行分割成感兴趣的令牌(例如使用正则表达式和/或'str.split()')。然后确保在使用它们填充数组之前将这些标记转换为数字值。 – dhrumeel
感谢您的迅速响应。 vector的内容与我的文章[99.25,........ 0]中所描述的一样,但正如你所说的,它被解析为字符串而不是数组。但有没有比reg-expression更简单的方法? – Mohannad
如果行符合样本,您可以从行中去掉sqare括号,并在逗号空格和int()中分隔出来的所有列表元素。说得通? – Dilettant