html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/343#issuecomment-76500617,https://api.github.com/repos/pydata/xarray/issues/343,76500617,MDEyOklzc3VlQ29tbWVudDc2NTAwNjE3,7462311,2015-02-28T01:02:27Z,2015-02-28T01:02:27Z,NONE,"Points taken. Thanks for responding so quickly. I didn't realize that Pandas does something similar. I understand that the default behavior of NumPy/Python is to pass by reference (assignment) but I didn't realize that this rule applies even when converting an object from one type to another. Now that I have checked, `np.ma.masked_array` also uses a reference to the input data by default (however, it also provides the option for creating a copy).

In the [API reference for DataArray](http://xray.readthedocs.org/en/latest/generated/xray.DataArray.html#xray.DataArray.__init__), it probably wouldn't hurt to say that the input data is not copied by default and that a reference is used instead. I guess making note of this would only benefit less experienced users like myself, but it would be appreciated. 
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,59308959
https://github.com/pydata/xarray/issues/343#issuecomment-76493025,https://api.github.com/repos/pydata/xarray/issues/343,76493025,MDEyOklzc3VlQ29tbWVudDc2NDkzMDI1,1217238,2015-02-27T23:36:02Z,2015-02-27T23:36:02Z,MEMBER,"Just for reference, pandas does the same thing here:

```
In [8]: import numpy as np

In [9]: x = np.zeros((4,4))

In [10]: df1 = pd.DataFrame(x)

In [11]: df2 = pd.DataFrame(x)

In [12]: df1.loc[:] = 1

In [13]: df1
Out[13]:
   0  1  2  3
0  1  1  1  1
1  1  1  1  1
2  1  1  1  1
3  1  1  1  1

In [14]: df2
Out[14]:
   0  1  2  3
0  1  1  1  1
1  1  1  1  1
2  1  1  1  1
3  1  1  1  1
```

I think this is more of a NumPy gotcha than an xray gotcha, per se.

From my perspective as an experienced NumPy user, this makes sense -- array data is not copied unless explicitly requested. Passing by reference instead of by value (like in MATLAB or R) is pretty fundamental to NumPy/Python, and it makes it many operations much more efficient.

The alternative here is indeed making our own defensive copy. I don't like that option because it will slow everything down, and xray will no longer meet the expectations of expert Python users. Unfortunately, NumPy does not have any sort of support for copy on write.

But, if you have suggestions for how to clarify this in xray's documentation, that would be greatly appreciated!
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,59308959