如何将1D阵列转换为对称的3D阵列?

时间:2017-08-16 22:54:46

标签: python arrays numpy gaussian gaussianblur

我有一个对称的1D numpy数组,例如,像这样:

0 1 2 1 0

我怎么能把它变成一个3D数组(有点类似于高斯内核),中心的值为2?

作为我的意思的一个例子(虽然数学可能不对),在2D中这将是这样的(虽然我需要它是3D):

0   0   0   0   0
0  0.5  1  0.5  0
0   1   2   1   0
0  0.5  1  0.5  0
0   0   0   0   0

1 个答案:

答案 0 :(得分:1)

承认这是而不是高斯内核,这是你如何计算 it

center = a[a.size // 2]
(a[:,    np.newaxis].repeat(a.size, axis=1) * a)\
  [:, :, np.newaxis].repeat(a.size, axis=2) * a \
/ center ** 2

(不要在这里粘贴整个输出。)