If you are looking for the maximum cumulative vector, your approach is fundamentally flawed. The built-in max() python function will return the tuple with the largest first value, meaning:
max([(1, 2), (6, 0), (3, 3), (5, 4)])
Will yield:
(6, 0)
Assuming you want the largest cumulative (summed) vector, use the following:
Using numpy's built in vectorization functionality is the most scalable solution:
import numpy as np
base_arr = np.array([(1, 2), (5, 0), (3, 3), (5, 4)])
max_vec = base_arr[base_arr.sum(axis=1).argmax()]
incremented_arr = tuple(max_vec + 1)
This uses the np.ndarray's built-in functionality rooted in highly-optimized C and Fortran pre-compiled code which uses SIMD (single instruction, multiple data) instructions provided by your CPU -- see the documentation. This allows you to make simultaneously perform arithmetic on "packed" data within your CPU's SSE/AVX registers, all with a single instruction -- see the image linked for a better visualization (I am having trouble actually adding it to this post).
Numpy seems to be rather portable in this sense, using different instruction sets (intrinsics) according to a device's CPU -- which is identified via a probe at runtime import -- so you should not have a problem with this approach.
Though less efficient, you can program your own NumPy "vectorized" function using np.vectorize -- see the documentation.
timeit
module, which I presume will give close results. – Cabalistic