Как разбить массив с 1 столбцом на несколько столбцов (массив numpy)

В настоящее время у меня есть файл .txt, который был загружен в python в виде списка, а затем помещен в массив np в виде одного столбца с количеством строк n в зависимости от размера файла. В файле есть строки, обрезанные сверху и снизу, чтобы очистить его. Соответствующий код показан ниже:

# Open the .txt file in the user selected folder

txtFile = glob.glob(folderView + "**/*.txt", recursive = True)
print (" The text files in the folder " + userInput + " are: " + str(txtFile))
# The quantitative output epatemp.txt file is always index position 1 in the glob list.
epaTemp = txtFile[1]
print (epaTemp)

###

quantData = open(epaTemp, 'r')
print (quantData)
result = [line.split(',') for line in quantData.readlines()[24:]]
print (result)
n = 4
result = result[:-n or None]
print (result)
print (" Length of List: " + str(len(result)))
print (result[0])

### Loop through all list components and split each
print (" NUMPY STUFF! ")
list_array = np.array(result)
print (list_array)

Затем массив печатается следующим образом: намного чище, чем файлы .txt 1990-х годов, которые мне дали для обработки...

Numpy_Array_Print

Моя проблема в том, что я не могу разбить этот единственный столбец на несколько столбцов после определения открытого файла как массива numpy в последних строках кода, перечисленных выше. Я пытаюсь создать один столбец для всего, что разделено пробелом, " ", но у меня проблемы с этим. Также может быть важно отметить, что когда я использую numpy.shape(list_array), он ничего не возвращает, как будто массив неправильно интерпретируется. Общая цель состоит в том, чтобы превратить этот массив из 1 столбца x n строк в 7 столбцов x n строк для каждого значения, разделенного на " " в текстовом файле. Если кто-нибудь может помочь мне с этой проблемой, я был бы очень признателен.


person Danny Huber    schedule 20.11.2019    source источник
comment
Numpy не предназначен для обработки текста. Так что превратите его обратно в список строк. Разделите каждую строку. Вы получаете список списков. Превратите это обратно в numpy (2D). Затем используйте транспонирование для доступа к столбцам, а не к строкам. Также я бы использовал pandas, который может распознавать список строк как фрейм данных в одной строке.   -  person roadrunner66    schedule 21.11.2019
comment
Вернитесь к строке result. line.split(',') прав? Столбцы действительно разделены запятыми. Ваш дисплей массива предлагает нет. line.split() использует разделение "пробелом" по умолчанию. Может помочь, если вы покажете часть исходного файла. Это может быть допустимый файл csv (с правильным разделителем).   -  person hpaulj    schedule 21.11.2019
comment
Я думаю, вы оба правы. Я совершаю ошибку, разделяя либо на pandas, либо на numpy, а не раньше (я пробовал оба). Я проверил файл в Excel, и при разделении по пробелу текстовый файл открывается отлично. Я считаю, что это проблема, я внесу изменения. Я ценю помощь. Я относительно новичок в python, изучаю его для своего рабочего процесса, поэтому большое спасибо.   -  person Danny Huber    schedule 21.11.2019


Ответы (1)


Все исправлено. Я неправильно разделил текстовый файл. Использование line.split() решило проблему. pandas тоже был необходим, так как это было не лучшее приложение для np. Спасибо всем за отзывы.

person Danny Huber    schedule 21.11.2019