我需要标准化一个 numpy 数据立方体:
cube = np.random.random(100000).reshape(10,100,100)
然后用中位数对 10 个结果平面中的每一个进行归一化。所以,例如对于第一架飞机
cube[0, :, :] /= np.median(cube[0, :, :])
我只是想尽可能避免循环😊 谢谢
最佳答案
您可以将轴列表传递给 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
但说实话,如果其他轴更长,则在最短轴上循环通常在性能方面并不是那么糟糕。
关于python - 将立方体的每个平面除以其中值,无循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27710953/