创建图层数组并执行中值python

时间:2017-02-05 08:14:44

标签: python arrays numpy median

我一直在努力创建一个图层数组,每个图层都包含一个图像。然后在此图层阵列上执行中位数以获得一个图像。

每个添加的图层(来自o[i,j])都是2D,形状(460, 640)包含浮点数。

在matlab中你很容易做到:

r_n = cell(1, num_filters);

for i = 1:num_filters
    layers = o{i,1};
    for j = 2:num_faces
        layers = cat(3, layers, o{i,j});
    end
    r_n{i} = median(layers, 3);
end

我是python的新手,也许我还在以Matlabish的方式思考

我试过了:

k=0;
for i in range(0,num_filters):
    layers = o[i+k,0]
    for j in range(1,num_faces):
        layers = np.array([layers,o[i,j]]);  ### HERE IS MY PROBLEM
    print layers.shape;
    r_n[i] = np.median(layers, axis = 0);
    k = k + 65;        

我的图层数组是错误的...这是一种正确的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以将它们与np.stack(创建新轴)叠加,然后应用中位数:

# just some random arrays
layers = [np.random.random((10, 10)), 
          np.random.random((10, 10)), 
          np.random.random((10, 10))]  
np.median(np.stack(layers, axis=0), axis=0)

或使用for - 循环:

layers = [o[i+k,0]]
for j in range(1,num_faces):
    layers.append(o[i,j])
np.median(np.stack(layers, axis=0), axis=0)