У меня есть двумерный массив numpy (raster_data) с размером растра 1 миллион * 1 миллион. Я хочу, чтобы классифицировать, что растр на два класса следующим образом:Ускорьте код в NumPy
class_A = np.where((raster_data >= 5.23) & (raster_data < 8.55),raster_data,np.nan)
class_B = np.where((raster_data >= 8.55) & (raster_data < 10.0),raster_data,np.nan)
Однако из-за очень большой размер данных я получаю ошибку памяти. Как я могу по-прежнему классифицировать этот растровый файл так, как я хотел? Я уже пробовал с 16 ГБ оперативной памяти и 64-битным NumPy.
Почему скорость названия, когда проблема является памятью? – cyborg
Массив элементов 1e6 x 1e6 имеет триллион (1e12) предметов. Даже если вы сохранили один бит за элемент, вам понадобится 125 ГБ ** просто для хранения массива 'raster_data' **, с одноточечными поплавками вам потребуется 4 ТБ памяти ... – Jaime
Ответ зависит от того, что вы собираетесь делать делать с классами, сколько элементов в классах (разреженная матрица?) и как вы храните данные. – cyborg