Your dataset is pretty small. Consider ( 400000(images) x 33(image height) x 33(image width) ) / (1024)*(1024) == 415.42 MegaBytes. I think you can afford to store these many images, right? Also, dont do genfromtxt, write your custom image generator, should look something like this;
f=open(‘something.csv’, ‘r’)
x = f.readline() #readfirstline
label = x[0]
image = np.reshape(x[1:], (33, 33), dtype=np.float32)
Do this for all the images, hope you get the gist!