Как записать результаты в выходной файл - PullRequest
0 голосов
/ 10 января 2020

У меня проблема при попытке вывести простые результаты в выходной файл. Здесь я попытался создать некоторые поддельные данные, используя numpy, но это само по себе вызывает проблемы, я продолжаю получать всевозможные ошибки, в основном связанные с тем, что индекс не является подозрительным или недопустимым индексом для скалярной переменной.

Мне нужен выходной CSV-файл, который выглядит следующим образом:

LineID  ColA    ColB    ColC
1  8  2 93
2  7  3 86
3  7  3 89
4  9  2 90

Используемый код:

import csv
import numpy as np



z=np.array([[1,8,2,93],[2,7,3,86],[3,7,3,89],[4,9,2,90]])

#b=np.array(z)
b=z
print('\n','b is : ','\n', b, '\n')

nummy=z[:,0]
ColA_results = z[:,1]
ColB_results = z[:,2]
ColC_results = z[:,3]
print('nummy: ',nummy)
print('ColA_results: ',ColA_results)
print('ColB_results: ',ColB_results)
print('ColC_results: ',ColC_results)

results_filename = (r'/Users/imagexpertinc/Desktop/steve_results/demo_03.csv')
with open(results_filename, 'w', newline='') as filey: ## Python 3... with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
    csv_writer = csv.writer(filey, delimiter = '\t', lineterminator='\n')
    csv_writer.writerow(['LineID', 'ColA','ColB','ColC'])
filey.close()




size_of_z=len(z)

indy = range(size_of_z)
print('indy is: ',indy)


for i in indy:
    print('i is :',i)
    print('nummy[i] is: ',nummy[i])
    #nummy = nummy[i]
    ColA_results = ColA_results[i]
    ColB_results = ColB_results[i]
    ColC_results = ColC_results[i]

    with open(results_filename, 'a') as filey: ## Python 3... with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
        csv_writer = csv.writer(filey, delimiter = '\t', lineterminator='\n')
        csv_writer.writerow([nummy, ColA_results, ColB_results, ColC_results])

Любые указатели на то, что я делаю здесь неправильно

Ответы [ 2 ]

1 голос
/ 10 января 2020

Вы можете попробовать:

import csv
import numpy as np

z=np.array([[1,8,2,93],[2,7,3,86],[3,7,3,89],[4,9,2,90]])

nummy=z[:,0]
ColA_results = z[:,1]
ColB_results = z[:,2]
ColC_results = z[:,3]

results_filename = (r'/Users/imagexpertinc/Desktop/steve_results/demo_03.csv')
with open(results_filename, 'w', newline='') as filey: ## Python 3... with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
    csv_writer = csv.writer(filey, delimiter = '\t', lineterminator='\n')
    csv_writer.writerow(['LineID', 'ColA','ColB','ColC'])

    for i in range(z.shape[0]):
        csv_writer.writerow([nummy[i], ColA_results[i], ColB_results[i], ColC_results[i]])
filey.close()
1 голос
/ 10 января 2020

Вы переосмыслили проблему. Массив numpy рассматривается Python как итеративный из итераций и может быть передан непосредственно в csv.writer.writerows (обратите внимание на s в строке s ):

import csv
import numpy as np



z=np.array([[1,8,2,93],[2,7,3,86],[3,7,3,89],[4,9,2,90]])

results_filename = ('/Users/imagexpertinc/Desktop/steve_results/demo_03.csv')
with open(results_filename, 'w', newline='') as filey:
    csv_writer = csv.writer(filey, delimiter = '\t', lineterminator='\n')
    csv_writer.writerow(['LineID', 'ColA','ColB','ColC'])

    csv_writer.writerows(z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...