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