使用python从文本文件生成1d数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python从文本文件生成1d数组相关的知识,希望对你有一定的参考价值。

我是python的新手。我的拼贴项目需要开发一些程序,对于数据分析我使用大量数组,那些数组的值取自文本文件在txt文件中的值如下

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行的列数错误

答案

这是因为第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]
另一答案

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

这可以这样做:

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])

以上是关于使用python从文本文件生成1d数组的主要内容,如果未能解决你的问题,请参考以下文章

在C++中如何读取文本中的数据存储为数组变量?

如何从python中的文本文件中获取所有3克?

如何将数组从.txt文件导入到numpy数组?

使用 python 生成器处理大型文本文件

使用 Python 的 ReportLab 包从大文本文件生成 PDF 文档很慢

将两列文本文件中的浮点数读入Python中的数组时出错