Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以附加到xarray.Dataset?_Python_Numpy_Pandas_Python Xarray - Fatal编程技术网

Python 是否可以附加到xarray.Dataset?

Python 是否可以附加到xarray.Dataset?,python,numpy,pandas,python-xarray,Python,Numpy,Pandas,Python Xarray,我一直在使用.append()方法连接pandas中的两个表(具有相同的字段)。不幸的是,该方法在xarray中不存在,有其他方法吗?您可以使用.concat或merge() Xarray没有append方法,因为它的数据结构构建在NumPy的不可调整大小的数组之上,所以我们不能在不复制整个数组的情况下追加新元素。因此,我们不实现append方法。相反,您应该使用 一种常见模式是在列表中累积Dataset/DataArray对象,并在末尾连接一次: datasets = [] for examp

我一直在使用
.append()
方法连接pandas中的两个表(具有相同的字段)。不幸的是,该方法在
xarray
中不存在,有其他方法吗?

您可以使用
.concat
merge()

Xarray没有append方法,因为它的数据结构构建在NumPy的不可调整大小的数组之上,所以我们不能在不复制整个数组的情况下追加新元素。因此,我们不实现
append
方法。相反,您应该使用

一种常见模式是在列表中累积Dataset/DataArray对象,并在末尾连接一次:

datasets = []
for example in examples:
    ds = create_an_xarray_dataset(example)
    datasets.append(ds)
combined = xarray.concat(datasets, dim='example')
您不希望在循环内串联——这会使代码以二次时间运行

或者,您可以为结果分配单个Dataset/DataArray,并且 ,例如:

(请注意,始终需要使用方括号进行索引,如
[]
.loc[]
——使用
sel()
isel()
进行赋值不起作用。)

这两种方法同样有效——这实际上是一个品味的问题,哪一种更适合您或更适合您的应用程序

值得一提的是,pandas也有同样的限制:每次使用
append
方法时,确实会复制整个数据帧。这是一个永久的惊喜,也是新用户性能问题的根源。因此,我认为我们做出了正确的设计决策,没有将其包括在xarray中

dims = ('example', 'x', 'y')
combined = xarray.Dataset(
    data_vars={'my_variable': (dims, np.zeros((len(examples), 100, 200)))},
    coords={'example': examples})
for example in examples:
    combined.loc[dict(example=example)] = create_an_xarray_dataset(example)