I am using python 3.8 and numpy 1.17.4. The output of the following piece of code
import time
import sys
import numpy as np
if __name__ == '__main__':
li = np.zeros(5000000,dtype=int)
sys.stdout.write("%s %s\n" % (type(li),type(li[0])))
start = time.process_time()
li += 5
sys.stdout.write("%.6fs\n" % (time.process_time()-start))
li = np.zeros(5000000,dtype=int)
li = list(li)
li = np.array(li)
sys.stdout.write("%s %s\n" % (type(li),type(li[0])))
start = time.process_time()
li += 5
sys.stdout.write("%.6fs\n" % (time.process_time()-start))
looks like
<class 'numpy.ndarray'> <class 'numpy.int64'>
0.037046s
<class 'numpy.ndarray'> <class 'numpy.int64'>
0.003537s
How come the latter is 10x faster to increment?