I did a quick test and looks like Construct events are going to be ALOT faster. It doesn't surprise me because since we have to use a Construct array then you have to use the Construct call to populate the array and I don't see a way to use Numpy and Python tricks for performance speedup.
Filled a 2000x2000 array with int 5.
start = time.clock()
for x in xrange(1,2000):
for y in xrange(1,2000):
end = time.clock()
final = end -start
Text.SetText("Final time: " + str(final))
In Construct just use two named loops, the inside loop a subevent to the first.
Basic Python w/ range(): 20.40
Python w/ xrange(): 20.19
Construct For Loop: 2.28
I didn't bother to check the performance for Numpy array generation with a Python array, but either way 2.28 seconds is hard to beat.