So what we are saying is that an array is only valid from within the function it was created and cannot be used by called upon by another function am I correct?
No, you are almost there.
The first array has global scope, so available in any function.
The second array in setup is visible only in setup, after its definition.
So it the global array can be called by any function but not re-defined outside of the function that created it. So I cannot edit a global array from within a function only create a copy with changes which will only apply within that function. Bummer!
At your skill level, the best way is to just keep the array global and access it directly from the function. It's when the function should modify multiple arrays that you need to do more complex things.
You probably mean, "initialize" specific elements. And, you probably mean that you have to re-initialize some values. Instead of relying on boot time initialization of the desired values, you should write code to do it.
It's a program design issue, unrelated to the scope issue that you stumbled on.