Hi Theodore Probably not the fastest, but a full example of how you may vectorize your loop. Ran just one test, and that speeded up the original code.
Example: ---------------- from numpy import empty_like def vectorized_rgb2hsv(im): "im is a (m, n, 3) array.""" im = im/255. out = empty_like(im) im_max = im.max(-1) delta = im.ptp(-1) s = delta/im_max s[delta==0] = 0 index = im[:,:,0] == im_max # red is max out[index, 0] = (im[index, 1] - im[index, 2] ) / delta[index] index = im[:,:,1] == im_max # green is max out[index, 0] = 2 + (im[index, 2] - im[index, 0] ) / delta[index] index = im[:,:,2] == im_max # blue is max out[index, 0] = 4 + (im[index, 0] - im[index, 1] ) / delta[index] out[:,:,0] = (out[:,:,0]/6.0) % 1.0 out[:,:,1] = s out[:,:,2] = im_max out = (255.*out).astype(uint8) return out Timings (shape: 1202, 800, 3): ----------------- code in first post: %prun a = rgb2hsv.rgb2hsv(s) 1923207 function calls in 18.423 CPU seconds removing loop: %prun b = rgb2hsv.vectorized_rgb2hsv(s) 8 function calls in 4.630 CPU seconds Arnar _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion