У меня есть большая матрица (1,017,209 строк), из которой мне нужно считывать элементы, выполнять операции над ними и собирать результаты в списки. Когда я делаю это на 10 000 строк или даже 100 000, он заканчивается в разумные сроки, однако 1 000 000 нет. Вот мой код:Эффективные операции с списком
import pandas as pd
data = pd.read_csv('scaled_train.csv', index_col=False, header=0)
new = data.as_matrix()
def vectorized_id(j):
"""Return a 1115-dimensional unit vector with a 1.0 in the j-1'th position
and zeroes elsewhere. This is used to convert the store ids (1...1115)
into a corresponding desired input for the neural network.
"""
j = j - 1
e = [0] * 1115
e[j] = 1.0
return e
def vectorized_day(j):
"""Return a 7-dimensional unit vector with a 1.0 in the j-1'th position
and zeroes elsewhere. This is used to convert the days (1...7)
into a corresponding desired input for the neural network.
"""
j = j - 1
e = [0] * 7
e[j] = 1.0
return e
list_b = []
list_a = []
for x in xrange(0,1017209):
a1 = vectorized_id(new[x][0])
a2 = vectorized_day(new[x][1])
a3 = [new[x][5]]
a = a1 + a2 + a3
b = new[x][3]
list_a.append(a)
list_b.append(b)
Что мешает этому масштабу (что является узким местом)? Есть ли способы его оптимизации?
Вы смотрите 'new [x]' четыре раза. –
Сколько у вас памяти? Вы используете тонну этого. – user2357112
Вам нужна только одна строка за раз, но, кажется, читает весь файл в памяти. –