我有一个对称的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
答案 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
(不要在这里粘贴整个输出。)