Exponential distance array
Single vert, array modifier, object offset, duplivert.

Animating the scale of the offset object
With the &quot;Add Mesh Extra Objects&quot; addon enabled can add a single vert object. Or by other means.
Since the single vert has no dimensions can array it and only effect the arrayed vert locations.
Add an array modifier to the single vert. Give it object offset add an empty.
Under Properties &gt; Object &gt; Instancing select Verts.
Make the display object you &quot;really&quot; want to array a child of the single vert.  Will now have this object instanced at location of each vert created by array modifier.

In the example image the empty has been given x location 2, and x scale 2.  The duplivert object is default cube with some scale in z.
Some theory.  Assume object is at (0, 0, 0)
&gt;&gt;&gt; loc = Vector() # zero

Get the matrix of the object offset object (the empty)
&gt;&gt;&gt; C.object
bpy.data.objects['Empty']

&gt;&gt;&gt; M = C.object.matrix_world

Ok original is at x = 0.  For the next 4 arrayed objects, apply the offset object transform
&gt;&gt;&gt; for i in range(4):
...     loc = M @ loc
...     print(loc.x)
...     
2.0
6.0
14.0
30.0