A (short) integer берет два байта для хранения. Вы хотите 25 000 списков, каждый из которых имеет 2 000 целых чисел; что дает
25000*2000*2/1000000 = 100 MB
Это прекрасно работает на моем компьютере (4 Гб RAM):
>>> import numpy as np
>>> x = np.zeros((25000,2000),dtype=int)
смог создать экземпляр выше матрицу нулей вы?
Вы читаете файл в списке списков Python и затем преобразуете его в массив numpy? Это плохая идея; он будет как минимум удваивать требования к памяти. Каков формат файлов ваших данных?
Для разреженных матриц scipy.sparse
предоставляет различные альтернативные типы данных, которые будут намного эффективнее.
EDIT: ответ на комментарий ОП.
У меня есть 25000 экземпляров некоторого другого класса, каждый из которых возвращает список длиной около 2000. Я хочу, чтобы поместить все эти списки возвращаются в np.array
.
Ну, вы как-то перейдете через 8 ГБ! Чтобы решить эту проблему, не делайте все эти манипуляции в памяти. Записывайте данные на диск по классу за раз, затем удаляйте экземпляры и читайте в файле с numpy.
Сначала делают
with open(..., "wb") as f:
f = csv.writer(f)
for instance in instances:
f.writerow(instance.data)
Это будет записывать все ваши данные в файл CSV большой иш. Тогда вы можете просто использовать np.loadtxt
:
numpy.loadtxt(open(..., "rb"), delimiter=",")
Путь более 100 МБ :) У меня 8 ГБ ОЗУ. – zebra
К вашему правлению, да, я могу создать экземпляр этого – zebra
. К вашему следующему редактированию у меня есть 25000 экземпляров какого-либо другого класса, каждый из которых возвращает список длиной около 2000. Я хочу, чтобы все эти списки были возвращены в np.array – zebra