This article would be more convincing if the NumPy version were actually vectorized. Replace the for-loop with
result = (arr - min_val) / (max_val - min_val)
That should often run faster and removes the allocation and for-loop, so it's easier to read.