Skip to content

Instantly share code, notes, and snippets.

@crusaderky
Created July 30, 2016 14:33
Show Gist options
  • Save crusaderky/a96db5b59396d94fe1e22694bc091d55 to your computer and use it in GitHub Desktop.
Save crusaderky/a96db5b59396d94fe1e22694bc091d55 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<xarray.DataArray (x: 2, y: 2)>\n",
"array([[1, 1],\n",
" [1, 1]])\n",
"Coordinates:\n",
" * x (x) <U2 'x1' 'x2'\n",
" * y (y) <U2 'y1' 'y2'"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import xarray\n",
"a = xarray.DataArray(\n",
" [[1,1], [1,1]],\n",
" dims=['x', 'y'],\n",
" coords={'x': ['x1', 'x2'], 'y': ['y1', 'y2']})\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<xarray.DataArray (x: 2, y: 2)>\n",
"array([[1, 1],\n",
" [1, 1]])\n",
"Coordinates:\n",
" * x (x) <U2 'x2' 'x1'\n",
" * y (y) <U2 'y3' 'y4'"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b = xarray.DataArray(\n",
" [[1,1], [1,1]],\n",
" dims=['x', 'y'],\n",
" coords={'x': ['x2', 'x1'], 'y': ['y3', 'y4']})\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "ValueError",
"evalue": "the variable 'x' has the same name as one of its dimensions ('y', 'x'), but it is not 1-dimensional and thus it is not a valid index",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-41-2a3d8764336f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mxarray\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconcat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mb\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdim\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'y'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\combine.py\u001b[0m in \u001b[0;36mconcat\u001b[1;34m(objs, dim, data_vars, coords, compat, positions, indexers, mode, concat_over)\u001b[0m\n\u001b[0;32m 112\u001b[0m raise TypeError('can only concatenate xarray Dataset and DataArray '\n\u001b[0;32m 113\u001b[0m 'objects, got %s' % type(first_obj))\n\u001b[1;32m--> 114\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobjs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata_vars\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcoords\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcompat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpositions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 115\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 116\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\combine.py\u001b[0m in \u001b[0;36m_dataarray_concat\u001b[1;34m(arrays, dim, data_vars, coords, compat, positions)\u001b[0m\n\u001b[0;32m 299\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 300\u001b[0m ds = _dataset_concat(datasets, dim, data_vars, coords, compat,\n\u001b[1;32m--> 301\u001b[1;33m positions)\n\u001b[0m\u001b[0;32m 302\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0marrays\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_from_temp_dataset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 303\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\combine.py\u001b[0m in \u001b[0;36m_dataset_concat\u001b[1;34m(datasets, dim, data_vars, coords, compat, positions)\u001b[0m\n\u001b[0;32m 269\u001b[0m \u001b[0minsert_result_variable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcombined\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 270\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 271\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mDataset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult_vars\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mresult_attrs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 272\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_coords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult_coord_names\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\dataset.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, data_vars, coords, attrs, compat, **kwargs)\u001b[0m\n\u001b[0;32m 207\u001b[0m \u001b[0mcoords\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 208\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdata_vars\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mcoords\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 209\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_set_init_vars_and_dims\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata_vars\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcoords\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcompat\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 210\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mattrs\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 211\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mattrs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mattrs\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\dataset.py\u001b[0m in \u001b[0;36m_set_init_vars_and_dims\u001b[1;34m(self, vars, coords, compat)\u001b[0m\n\u001b[0;32m 263\u001b[0m \u001b[0maligned\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0malign_variables\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvariables\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 264\u001b[0m new_variables, new_coord_names = expand_variables(aligned,\n\u001b[1;32m--> 265\u001b[1;33m compat=compat)\n\u001b[0m\u001b[0;32m 266\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 267\u001b[0m \u001b[0mnew_coord_names\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcoords\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\merge.py\u001b[0m in \u001b[0;36mexpand_variables\u001b[1;34m(raw_variables, old_variables, compat)\u001b[0m\n\u001b[0;32m 75\u001b[0m \u001b[0madd_variable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcoord\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvariable\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 76\u001b[0m \u001b[0mvar\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvariable\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 77\u001b[1;33m \u001b[0madd_variable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 78\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 79\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mnew_variables\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnew_coord_names\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\merge.py\u001b[0m in \u001b[0;36madd_variable\u001b[1;34m(name, var)\u001b[0m\n\u001b[0;32m 55\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 56\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0madd_variable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 57\u001b[1;33m \u001b[0mvar\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_as_dataset_variable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 58\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mvariables\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 59\u001b[0m \u001b[0mvariables\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\Users\\crusader\\Anaconda3\\lib\\site-packages\\xarray\\core\\merge.py\u001b[0m in \u001b[0;36m_as_dataset_variable\u001b[1;34m(name, var)\u001b[0m\n\u001b[0;32m 18\u001b[0m raise ValueError('the variable %r has the same name as one of its '\n\u001b[0;32m 19\u001b[0m \u001b[1;34m'dimensions %r, but it is not 1-dimensional and '\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m 'thus it is not a valid index' % (name, var.dims))\n\u001b[0m\u001b[0;32m 21\u001b[0m \u001b[0mvar\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_coord\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mvar\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: the variable 'x' has the same name as one of its dimensions ('y', 'x'), but it is not 1-dimensional and thus it is not a valid index"
]
}
],
"source": [
"xarray.concat([a, b], dim='y')"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(<xarray.DataArray (x: 2, y: 4)>\n",
" array([[ 1., 1., nan, nan],\n",
" [ 1., 1., nan, nan]])\n",
" Coordinates:\n",
" * x (x) object 'x1' 'x2'\n",
" * y (y) object 'y1' 'y2' 'y3' 'y4', <xarray.DataArray (x: 2, y: 4)>\n",
" array([[ nan, nan, 1., 1.],\n",
" [ nan, nan, 1., 1.]])\n",
" Coordinates:\n",
" * x (x) object 'x1' 'x2'\n",
" * y (y) object 'y1' 'y2' 'y3' 'y4')"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a1, b1 = xarray.align(a, b, join='outer')\n",
"a1, b1"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<xarray.DataArray (x: 2, y: 8)>\n",
"array([[ 1., 1., nan, nan, nan, nan, 1., 1.],\n",
" [ 1., 1., nan, nan, nan, nan, 1., 1.]])\n",
"Coordinates:\n",
" * x (x) object 'x1' 'x2'\n",
" * y (y) object 'y1' 'y2' 'y3' 'y4' 'y1' 'y2' 'y3' 'y4'"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xarray.concat([a1, b1], dim='y')"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [Root]",
"language": "python",
"name": "Python [Root]"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment