从 xarray DataArray 中删除零

问题描述 投票:0回答:1

我有一个具有三个坐标的 DataArray,我想从其中一个维度中删除包含所有零的数组,但我似乎无法正确处理。数据数组 (old_array) 如下所示,如您所见,有相当多的数组用零填充。

<xarray.DataArray (dim1: 100, dim2: 100, dim3: 100)>
array([[[81.20, 13.20, 12.24, ..., 81.24,
         14.61, 85.58],
        [31.34, 83.96, 02.97, ..., 46.88,
         01.81, 48.24],
        [43.54, 12.50, 35.33, ..., 39.23,
         91.93, 01.21],
        [37.95, 75.59, 71.00, ..., 15.14,
         68.76, 44.56],
        [54.31, 48.99, 85.59, ..., 15.58,
         86.48, 81.19]],

       [[ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
...                                
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ]],           
                                   
       [[ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ],            
        [ 0.  ,  0.  ,  0.  , ...,  0.  ,
          0.  ,  0.  ]]])
Coordinates:
  * dim1  (dim1) <U7 'x0 y0 z0' 'x1 y0 z0' 'x2 y0 z0' ... 'x10 y10 z8' 'x10 y10 z9' 'x10 y10 z10'
  * dim2  (dim2) float64 0.0 0.1 0.2 ... 9.8 9.9 10.0
  * dim3  (dim3) float64 0.5 1.0 1.5 ... 49.0 49.5 50.0

我试过了

new_array = old_array.drop_sel(dim1 = np.zeros(100))

但它给了我 KeyError:“并非所有值都在索引 'dim1' 中找到”

我也试过了

new_array = old_array.drop(np.zeros(100), dim1)

但是我有一个 ValueError: dimension 'x1 y5 z3' does not have coordinate labels.

我想告诉 xarray “如果'x2 y3 z7'是一个全为零的数组,然后删除它”,但我不知道该怎么做。

python numpy python-xarray
1个回答
0
投票

仍然很难说出你想做什么,但据我所知,你想删除数组中等于零的部分。为此,您应该将

DataArray.where
drop=True
:

一起使用
old_array.where(old_array > 0, drop=True)

drop_sel
用于根据其值删除索引标签。

© www.soinside.com 2019 - 2024. All rights reserved.