簡體   English   中英

使用 numpy 對 3D 數組進行下采樣

[英]Downsampling 3D array with numpy

給定數組:

A = array([[[1, 2, 3, 1],
            [4, 5, 6, 2],
            [7, 8, 9, 3]]])

我在正向傳遞中獲得以下數組,下采樣因子為k-1

k = 3
B = A[...,::k]

#output  
array([[[1, 1],
        [4, 2],
        [7, 3]]])

在向后傳遞中,我希望能夠恢復到原來的形狀,其中 output 為:

array([[[1, 0, 0, 1],
        [4, 0, 0, 2],
        [7, 0, 0, 3]]])

您可以使用numpy.zeros來初始化 output 和索引:

shape = list(B.shape)
shape[-1] = k*(shape[-1]-1)+1
# [1, 3, 4]

A2 = np.zeros(shape, dtype=B.dtype)
A2[..., ::k] = B

print(A2)

output:

array([[[1, 0, 0, 1],
        [4, 0, 0, 2],
        [7, 0, 0, 3]]])

使用A

A2 = np.zeros_like(A)
A2[..., ::k] = B
# or directly
# A2[..., ::k] = A[..., ::k]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM