Как я могу получить доступ к случайной точке без полного чтения? - PullRequest
0 голосов
/ 18 февраля 2020

У меня огромный набор данных для обучения word2ve c.
Пример выглядит следующим образом.

15 24 0
22 23 1 
11 15 0 
22 27 1 
...

Я хочу случайным образом отобрать его.

Я пытался использовать функцию кодеков и функцию разделения.

Но этот файл слишком большой, поэтому код делает ошибку памяти.

Чтобы избежать ошибки памяти, я использую for и open (). например,

for line in open(fileNM):
    train(line)

Но таким образом я могу получить доступ к данным только последовательным способом.

Как получить произвольный доступ к данным без полного чтения?

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вы можете использовать встроенную библиотеку python linecache для получения строки из файла:

https://docs.python.org/3.7/library/linecache.html

0 голосов
/ 18 февраля 2020

если вы знаете, сколько строк в файле, вы можете использовать что-то вроде:

import pandas
import random

row_count = 10000000
sample_size = 10000
file_name = "xyz.csv"
skip_set = set(np.random.choice(row_count, row_count-sample_size))
df = pandas.read_csv(file_name, sep=' ', skiprows=lambda x: x in skip_set)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...