Ita*_*der 6 python numpy pandas python-xarray
我一直在使用该.append()方法在pandas中连接两个表(具有相同的字段).不幸的是,这种方法不存在xarray,还有另一种方法吗?
sho*_*yer 11
Xarray没有append方法,因为它的数据结构是在NumPy的不可调整大小的数组之上构建的,所以我们不能在不复制整个数组的情况下附加新元素.因此,我们没有实现一种append方法.相反,你应该使用xarray.concat.
一种常见的模式是在列表中累积Dataset/DataArray对象,并在结尾处连接一次:
datasets = []
for example in examples:
ds = create_an_xarray_dataset(example)
datasets.append(ds)
combined = xarray.concat(datasets, dim='example')
Run Code Online (Sandbox Code Playgroud)
您不希望在循环内部连接 - 这将使您的代码在二次时间内运行.
或者,您可以为结果分配单个数据集/ DataArray,并 使用索引填充值,例如,
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)
Run Code Online (Sandbox Code Playgroud)
(请注意,你总是需要使用索引用方括号状[]或.loc[]-分配与sel()和isel().不工作)
这两种方法同样有效 - 这真的是一个品味的问题,一个看起来更好,或更适合您的应用程序.
对于它的价值,熊猫也有同样的限制:该append方法确实在每次使用时复制整个数据帧.对于新用户来说,这是一个永久的惊喜和性能问题的根源.所以我认为我们做出了正确的设计决定,不包括在xarray中.
| 归档时间: |
|
| 查看次数: |
1990 次 |
| 最近记录: |