Setting a Batch of Pixels from Array

I have some python code that converts a 3 dimensional numpy array, x, y, and (r,g,b) and I was wonder if there is a way to batch set pixels better than the way I am currently doing it.

for x, row in enumerate(canvas):
for y, color in enumerate(row):
frame_canvas.SetPixel(y, x, color[0], color[1], color[2])

Any feedback would be great. Thanks!

I talked to Henner about this last weekend and he confirmed that you need to look and set each pixel one by one because of mapping functions that get applied to each coordinate. So you cannot just batch copy a framebuffer or even lines.