Copying an object with python without actually creating a new object
If it's speed you are going for

import bpy
from bpy import context

obj = context.active_object

# add two array modifiers
count = 32
arrays = {"x": (1.5, 0, 0),
          "y": (0, 1.5, 0)}

for axis, displace in arrays.items():          
    mod = obj.modifiers.new(axis, 'ARRAY')
    mod.count = count
    mod.relative_offset_displace = displace
    bpy.ops.object.modifier_apply(modifier=mod.name)

bpy.ops.object.origin_set()