我是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行的列数错误
答案 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])