I need to write a bit of code that will get a list of the RGB colours in an image and then translate them into a NumPy array of lab colours. I have managed to do this, but I would like to learn how I can do it more efficiently. from skimage.color import rgb2lab from skimage.io import imread import numpy as np from PIL import Image # @UnresolvedImport def get_histogram (img): #histogram = plt.hist(img.flatten(), bins=100, facecolor='green', alpha=0.75) w, h = img.size colours = img.getcolors(w*h) #Returns a list [(pixel_count, (R, G, B))] num, colours_rgb = zip(*colours) r,g,b = zip(*colours_rgb) num_of_colours = len(r) w2,h2 = 1,num_of_colours data = np.zeros( (w2,h2,3), dtype=np.uint8) print(data.shape) data[0,:,0] = r data[0,:,1] = g data[0,:,2] = b print(data) colours_lab = rgb2lab(data)