home / github / issue_comments

Menu
  • GraphQL API
  • Search all tables

issue_comments: 76493025

This data as json

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-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
Powered by Datasette · Queries took 0.608ms · About: xarray-datasette