Numpy.tile() 切片数组上的“混淆”轴

Numpy.tile() "confusing" axes on sliced array

提问人:HK92 提问时间:3/3/2023 最后编辑:HK92 更新时间:3/3/2023 访问量:34

问:

我有一个 2D numpy 数组,我通过切片 3D 光栅数据集(即我检索到第一个光栅波段)检索了它。现在,当我尝试将这个 2D numpy 数组平铺成 3D 数组以运行一些矢量化操作时,numpy 似乎将我的数组的轴解释为 (1,2)(这是原始轴标签)而不是 (0,1)。

假设栅格数据集的形状为 。我想检索存储在轴中的 2D 数组,所以我像这样切片:(1,20,20)(1,2)

raster_band = raster_data[0,:,:]

尝试将其平铺成形状的张量,如下所示:(20,20,4)

tensor = np.tile(raster_band, (1,1,4))

返回形状的张量,而不是预期结果。(1,20,80)

我尝试过压扁和挤压的变体,但没有什么能为我解决这个问题。有谁知道处理这种行为的聪明方法?

数组 numpy 切片 轴平

评论


答:

0赞 mozway 3/3/2023 #1

在平铺之前,您需要将其制作成 3D:

tensor = np.tile(raster_band[...,None], (1, 1, 4))

完整示例:

raster_data = np.arange(400).reshape((1, 20, 20))
raster_band = raster_data[0,:,:]
tensor = np.tile(raster_band[..., None], (1, 1, 4))
tensor.shape
# (20, 20, 4)

评论

1赞 HK92 3/6/2023
非常感谢,就像一个魅力!另外,我刚刚了解了省略号运算符。