使用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数组的主要内容,如果未能解决你的问题,请参考以下文章