创建图层数组并执行中位数 python
create layers array and perform median python
我一直在努力创建一个图层数组,每个图层都包含一个图像。然后对这一层数组进行中值得到一张图像。
每个添加的图层(来自 o[i,j]
)都是二维的,形状 (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;
我的层数组是错误的...正确的方法是什么?
您可以将它们与 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)
我一直在努力创建一个图层数组,每个图层都包含一个图像。然后对这一层数组进行中值得到一张图像。
每个添加的图层(来自 o[i,j]
)都是二维的,形状 (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;
我的层数组是错误的...正确的方法是什么?
您可以将它们与 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)