将每个立方体的平面除以其中位数而没有环

时间:2014-12-30 18:54:35

标签: python numpy

我需要规范化一个numpy数据立方体说:

cube = np.random.random(100000).reshape(10,100,100)

然后用中位数对10个结果平面中的每一个进行归一化。所以,例如对于第一架飞机

cube[0, :, :] /= np.median(cube[0, :, :])

我只想尽可能避免循环 感谢

1 个答案:

答案 0 :(得分:5)

您可以将轴列表传递给np.median,然后通过Nonenp.newaxis)展开:

>>> cube = np.random.random(100000).reshape(10,100,100)
>>> simple = cube / np.median(cube,axis=[1,2])[:,None,None]
>>> 
>>> brute = cube.copy()
>>> for i in range(10):
...     brute[i, :, :] /= np.median(cube[i, :, :])
...     
>>> np.allclose(brute, simple)
True

但老实说,如果其他轴的长度更长,那么在最短轴上循环往往不是那么糟糕。