I have an array in form {{int, int, real, ... , string, real, ...},...} with dimensions of approx 1,000,000 x 400.

My goal is to minimize the time that it takes to update a large number of selective values in this array.

If the values were adjacent, I could do something like

```
arr[[...]] = ParallelMap[ updateFunc,arr[[...]] ]

```

but `Part[]` doesn't take selective values, like say `Extract[]` can. So `arr[[{{1,2},{5,7},...}]]` is not an option (it does something entirely different), and updating Extract doesn't place values back into the array. Believe me, against my better judgement, I've tried: `Set::write: "Tag Extract in Extract[{1,2,3,4,5},{{1},{3},{5}}] is Protected."`.

I tried `SetSharedVariable[arr]` and then using ParallelMap around the individual updates, but holy cow is using shared variables time consuming!

I finally settled on the fastest method I've found, which is

```
arr=ParallelTable[updateFunc[row],{row,arr}];

```

It is still painfully slow, and I know there's a better way than to (a) retouch every value, (b) create a whole new temp table in memory.

Help please!