首页 > 解决方案 > 扩散一个长方体

问题描述

我有一些长方体数据存储在 numpy 数组中,形状为(512、512、512)。

我需要将数组中的值扩散到长方体中每个点的一阶邻居的平均值。所以结果应该是一个形状相同的数组(512、512、512)。

标签: pythonnumpy

解决方案


正如 Susmit 在评论中所指出的,可以使用卷积。

import torch
import torch.nn.functional as F
import numpy as np

def dilute(data, order=1):
    size = 1 + order * 2

    weights = torch.ones((1, 1, size, size, size)) / (size ** 3)
    weights = weights.to(torch.float32)

    data = np.pad(data, order, mode='reflect')
    data = torch.tensor(data, dtype=torch.float32)
    data = data.view((1, 1, *data.shape))

    data = F.conv3d(data, weights, stride=1)
    return data                              


推荐阅读