使用python生成一维数组形式txt文件

时间:2019-02-14 02:45:58

标签: python numpy multidimensional-array

我是python的新手。对于需要开发某些程序的拼贴项目,为了进行数据分析,我使用了大量的数组,这些数组的值取自文本文件。txt文件中的值如下所示< / p>

0
0
0
0,0,0
0,0,0,0,0,0
0,0
0,0,0

我想转换成一维数组,例如 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

我该怎么做。谢谢

我得到了一些完整的帮助代码,但是那行不通,我遇到了一些我无法识别的错误

path2='page_2.txt'
input2 = np.array(np.loadtxt(path2, dtype='i', delimiter=','))

错误:

ValueError                                Traceback (most recent call
last) <ipython-input-139-8836e57e833d> in <module>
      5 
      6 path2='page_2.txt'
----> 7 input2 = np.array(np.loadtxt(path2, dtype='i', delimiter=','))
      8 
      9 path3='page_4.txt'

~\Anaconda3\lib\site-packages\numpy\lib\npyio.py in loadtxt(fname,
dtype, comments, delimiter, converters, skiprows, usecols, unpack,
ndmin, encoding)    1099         # converting the data    1100        
X = None
-> 1101 for x in read_data(_loadtxt_chunksize):1102 if X is None:1103 X = np.array(x, dtype) 
~\Anaconda3\lib\site-packages\numpy\lib\npyio.py in
read_data(chunk_size)    1023                 line_num = i + skiprows
+ 1 1024 raise ValueError("Wrong number of columns at line %d"
-> 1025 % line_num)1026 1027# Convert each value according to its column and store
     

ValueError:第4行的列数错误

2 个答案:

答案 0 :(得分:2)

这是因为第4行(即0,0,0)具有三列,而不是前三行。

您可以做的是连接所有行并将其转换为数组:

with open(path2) as f:
    str_arr = ','.join([l.strip() for l in f])

int_arr = np.asarray(str_arr.split(','), dtype=int)

print(int_arr)
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

答案 1 :(得分:0)

如果我理解正确,您希望将整个文件中的所有元素都放在一个数组中。

可以这样做:

with open(filename) as f:
    numbers = [
        e
        for line in f
        for e in line.strip().split(',')]

int_arr = np.asarray(numbers, dtype=int)

之后我们有:

>>> print(int_arr)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])