Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2012 12:34:53

TwoGOOse
Зарегистрирован: 2012-11-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

Добрый день!
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 (Ноя. 27, 2012 12:51:24)

Офлайн

#2 Ноя. 27, 2012 14:35:33

TwoGOOse
Зарегистрирован: 2012-11-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

Кто-нибудь знает, как сформировать массив из случайных булевых переменных?

Офлайн

#3 Ноя. 27, 2012 17:17:28

igor
Зарегистрирован: 2012-05-01
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

data = np.loadtxt('Test.csv',usecols= (0,1),delimiter=',',unpack=True)

Отредактировано igor (Ноя. 27, 2012 17:19:20)

Офлайн

#4 Ноя. 28, 2012 01:46:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

TwoGOOse
open('Test.csv', 'w', newline='')
для чего устанавливается newline ?



Офлайн

#5 Ноя. 28, 2012 08:27:41

TwoGOOse
Зарегистрирован: 2012-11-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

py.user.next
для чего устанавливается newline ?

Это вот из темы http://python.su/forum/topic/16164/
У меня тогда была проблема, что пишутся строки через одну пустую.

Офлайн

#6 Ноя. 29, 2012 00:14:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

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



Отредактировано py.user.next (Ноя. 29, 2012 00:14:41)

Офлайн

#7 Ноя. 29, 2012 08:18:59

TwoGOOse
Зарегистрирован: 2012-11-15
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

py.user.next
я проверил у себя - начальный код всё нормально сохраняет, и отображается нормально (Fedora 14 OpenOffice 3.3.0)
1)
сам код нужно написать нормально, так как есть конструкции вроде

import csv as csv

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


Та проблема была решена, теперь новая. С другой стороны ответ igor, решает и вторую проблему. Осталось только формирование логического массива

Офлайн

#8 Ноя. 29, 2012 11:31:05

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

Если массив одномерный, то можно просто поочередно записать true, false.
Для такого мизерного количества возможных значений (два!) даже использование аппаратного генератора случайных чисел качественного отличия не покажет.



Офлайн

#9 Ноя. 30, 2012 02:10:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив

TwoGOOse
Та проблема была решена, теперь новая.
то решение было сделано через одно место, которое и породило новую проблему, не факт, что последнюю
нужно сначала данные привести в порядок, а потом работать с ними нормальным образом



Офлайн

#10 Дек. 2, 2012 20:58:12

Cassum
Зарегистрирован: 2012-06-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Csv файл, чтение в массив


TwoGOOse
Кто-нибудь знает, как сформировать массив из случайных булевых переменных?
import random
arr = [random.choice([True, False]) for i in xrange(10)]
10 взято с потолка.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version