Non-destructive Array

I usually work with big architecture project where I need to scatter lights/ table/etc. on rectangular arrays, but I would need to keep them editable since a lot of changes always happen.
What is a good tool to achieve it? (no idea how GH works)

i would suggest to use blocks for the objects that you place with the array.
if you update a block (blockedit) all instances update as well.
if you need to update the spaceing / array-cell distance you can turn on control points of the block instances (_pointsOn) and _scaleNU the insert-Points.

make sure to have a well organized layer-structure - and well understand the rhino-block concept:
block-geometry(definition) can be on several layers. (if you turn the layers on/off the elements, part of the block get hidden)
the block-instance itself is on a layer.

check out this post for more ideas how to organize a document with blocks

I tried with success what you suggested, it’s a good technique although very cumbersome.
In Autocad or Blender or other program when an object is arrayed it stays parametrical, so in a couple of click it’s easy to change them. I would love that system but…

Maybe GH?

Thank you anyway, I discovered something new…

… just checked:
the array-command also supports history
https://docs.mcneel.com/rhino/6/help/en-us/commands/array.htm
indicated by this symbol in the help
image

if you have a unique geometry working with history would also be possible.
if you need to change the geometry in a more fundamental way, and / or it is composed of more elements - blocks is the way to do it (in rhino)

gh can do it as well of course