Сгенерировать текстовый файл 1d массива с помощью Python - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в python. Для моего коллажного проекта необходимо разработать какую-то программу, для анализа данных я работаю с большим количеством массивов, значения этого массива берутся из текстового файла. В текстовом файле значение указано ниже

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 голосов
/ 14 февраля 2019

Если я правильно понимаю, вы хотите, чтобы все элементы из всего файла в одном массиве.

Это можно было бы сделать так:

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])
0 голосов
/ 14 февраля 2019

Это потому, что строка 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...