抱歉,如果这有点长。我有一个.txt文件,它的值具有不同的行长度,并且希望以python中的矩阵形式读取该文件。文件内容类似于:
1
1
1
6
7,8,3
6,6,8
8,7,1
我想读取文件,然后用零填充行(类似于Matlabs dlmread()),以匹配最大行长度。我尝试过的方法要么给我一个字符串,要么给我一个没有零的矩阵。任何帮助都将不胜感激。你知道吗
我的代码:
File_3min = open(File_3min, 'r')
array = File_3min.readlines()
data = []
for i in array:
data.append(i)
numpy_fillna(data)
函数将零添加到不满足最大行长度的行中。你知道吗
import numpy as np
def numpy_fillna(data):
lens = np.array([len(i) for i in data])
mask = np.arange(lens.max()) < lens[:,None]
out = np.zeros(mask.shape, dtype=data.dtype)
out[mask] = np.concatenate(data)
return out
首先,用context
with
语句打开文件,这样在您处理完它之后它就可以正常关闭了,这只是一个好的实践注意,我还使用
split(',')
从每一行获取列表,并使用strip()
获取所有没有空格和换行符的行现在您可以得到如下所示的线条的最大长度:
现在您已经有了一行的最大长度和行数(使用
len(lines)
),您可以创建一个由正确形状的零组成的numpy数组,稍后填充:现在要实际填充数组,您可以这样做,这并不漂亮,但它是有效的:
现在您在
my_array
中所拥有的是长度相等的行/行,用零填充文件中曾经的行。你知道吗妈的,比我强。我的类似:
相关问题 更多 >
编程相关推荐