Do you think such performance improvements belong here and not in `__setitem__`? In that case this method would just be:

```python
def fromndarray(self, arr, dist={0: 'b'}, grid_shape=None):
    out = self.empty(arr.shape, dtype=arr.dtype, dist=dist, grid_shape=grid_shape)
    out[:] = arr
    return out
```