Найти - Пользователи
Полная версия: Csv файл, чтение в массив
Начало » Python для новичков » Csv файл, чтение в массив
1
TwoGOOse
Добрый день!
win7x84, p3.2.3

Возникли трудности с чтением файла csv в *двумерный массив*.
import csv as csv
import numpy as np
import random
#Создаёт файл с 2 столбиками и 10 строками       
with open('Test.csv', 'w', newline='') as outfile:
    writer = csv.writer(outfile)
    for j in range(5):
        writer.writerow('1' + '1')
    for j in range(5):
        writer.writerow('0' + '1')      
# Открываем файл с исходными данными для работы и открываем файл для вывода данных.
with open('Test.csv', 'r', newline='') as infile, open('OutPut', 'w', newline=''):
    writer = csv.writer(outfile)
    reader = csv.reader(infile)
    data=[] #создадим массив для хранения данных из файла и считаем туда файл
    for row in infile:
        data.append(row)
        
    print(data)
    data = np.array(data)
    print('np.array')
    print(data)  

и вместо двумерного массива, с которым я бы смог работать по типу
b = data[0,0]
c = data[0,5] + data[1,5]

я получаю одномерный с символами перевода и конца строки.
Python 3.2.3 (default, Apr 11 2012, 07:15:24)
Type “help”, “copyright”, “credits” or “license” for more information.

['1,1\r\n', '1,1\r\n', '1,1\r\n', '1,1\r\n', '1,1\r\n', '0,1\r\n', '0,1\r\n', '0,1\r\n', '0,1\r\n', '0,1\r\n']
np.array
['1,1\r\n' '1,1\r\n' '1,1\r\n' '1,1\r\n' '1,1\r\n' '0,1\r\n' '0,1\r\n'
 '0,1\r\n' '0,1\r\n' '0,1\r\n']

Как лучше поступить? Как получить массив “численных” данных из csv?

*доп. вопрос. если я пишу в файл writer.writerow('Мама мыла раму'), то потребуется 14 столбиков,
как записать в одну ячейку?
TwoGOOse
Кто-нибудь знает, как сформировать массив из случайных булевых переменных?
igor
data = np.loadtxt('Test.csv',usecols= (0,1),delimiter=',',unpack=True)
py.user.next
TwoGOOse
open('Test.csv', 'w', newline='')
для чего устанавливается newline ?
TwoGOOse
py.user.next
для чего устанавливается newline ?

Это вот из темы http://python.su/forum/topic/16164/
У меня тогда была проблема, что пишутся строки через одну пустую.
py.user.next
TwoGOOse
Это вот из темы http://python.su/forum/topic/16164/
У меня тогда была проблема, что пишутся строки через одну пустую.
я проверил у себя - начальный код всё нормально сохраняет, и отображается нормально (Fedora 14 OpenOffice 3.3.0)
1)
сам код нужно написать нормально, так как есть конструкции вроде
import csv as csv
2)
если есть какие-то ошибки, проверяй в hex'е, что сохранилось в файл, а не в выводе офиса
TwoGOOse
py.user.next
я проверил у себя - начальный код всё нормально сохраняет, и отображается нормально (Fedora 14 OpenOffice 3.3.0)
1)
сам код нужно написать нормально, так как есть конструкции вроде

import csv as csv

2)
если есть какие-то ошибки, проверяй в hex'е, что сохранилось в файл, а не в выводе офиса


Та проблема была решена, теперь новая. С другой стороны ответ igor, решает и вторую проблему. Осталось только формирование логического массива
Lexander
Если массив одномерный, то можно просто поочередно записать true, false.
Для такого мизерного количества возможных значений (два!) даже использование аппаратного генератора случайных чисел качественного отличия не покажет.
py.user.next
TwoGOOse
Та проблема была решена, теперь новая.
то решение было сделано через одно место, которое и породило новую проблему, не факт, что последнюю
нужно сначала данные привести в порядок, а потом работать с ними нормальным образом
Cassum

TwoGOOse
Кто-нибудь знает, как сформировать массив из случайных булевых переменных?
import random
arr = [random.choice([True, False]) for i in xrange(10)]
10 взято с потолка.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB