我需要规范化一个numpy数据立方体说:
cube = np.random.random(100000).reshape(10,100,100)
然后用中位数对10个结果平面中的每一个进行归一化。所以,例如对于第一架飞机
cube[0, :, :] /= np.median(cube[0, :, :])
我只想尽可能避免循环 感谢
答案 0 :(得分:5)
您可以将轴列表传递给np.median
,然后通过None
(np.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
但老实说,如果其他轴的长度更长,那么在最短轴上循环往往不是那么糟糕。