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/2791#issuecomment-471136862,https://api.github.com/repos/pydata/xarray/issues/2791,471136862,MDEyOklzc3VlQ29tbWVudDQ3MTEzNjg2Mg==,6164157,2019-03-09T02:14:53Z,2019-03-09T02:15:40Z,CONTRIBUTOR,"To make things concrete, the solution that I have in mind is as simple as adding this function to `DataArray`:
```python
def __format__(self, format_spec):
return self.values.__format__(format_spec)
```
Here's one use case I have encountered:
```python
ds=xr.Dataset({'A':(['x','y','z'], np.random.rand(40,40,3)),
'B':(['z'], np.random.randn(3))},
coords={'z':[31,42,45]})
fg=ds.A.plot(col='z')
for ax, d in zip(fg.axes.flat, fg.name_dicts.flat):
t=ax.get_title()
ax.set_title('{} and B(z)={:1.2}'.format(t, ds.sel(**d).B))
```
This way, if you want to vectorize a `__format__` on an array can you not simply do
```python
ar = xr.DataArray([39, 103, id(xr)])
print('{:3.3f} {:3.3e} {:x}'.format(*ar))
#prints `39.000 1.030e+02 10e5bb548`
```
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,415209776
https://github.com/pydata/xarray/issues/2791#issuecomment-470801183,https://api.github.com/repos/pydata/xarray/issues/2791,470801183,MDEyOklzc3VlQ29tbWVudDQ3MDgwMTE4Mw==,6164157,2019-03-08T04:30:22Z,2019-03-08T04:30:22Z,CONTRIBUTOR,"I tend towards the former, to coerce singleton arrays to behave as scalars of their `dytpe`. I think it makes more sense in terms of use cases (at least everything that I needed). I don't mind implementing it if there is agreement as to which of the two to do.
> These behaviors would definitely conflict for scalar objects -- in the second case, we would still want to include some indication that it's an `xarray.DataArray`. NumPy doesn't have a conflict because indexing an array results in a NumPy scalars, which prints like Python builtin scalars.
@shoyer I don't see why would that be the case. If I format something as `'{:04d} {:3.5e} {:2.3E}'.format(dataarray)` or whatnot, I would expect that the average user would expect to get `'0043 4.35000e+02 2.450E+02'` in return, without any indication that these are data arrays.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,415209776
https://github.com/pydata/xarray/issues/2791#issuecomment-469320419,https://api.github.com/repos/pydata/xarray/issues/2791,469320419,MDEyOklzc3VlQ29tbWVudDQ2OTMyMDQxOQ==,6164157,2019-03-04T16:35:09Z,2019-03-04T16:35:44Z,CONTRIBUTOR,"On the one hand I agree, but note that the same behavior works for numpy arrays
```python
import numpy as np
a=np.array([1,2,3,4])
' '.join('{:d}'.format(v) for v in a)
# prints '1 2 3 4'
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,415209776