python - 将立方体的每个平面除以其中值,无循环

标签 python numpy

我需要标准化一个 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/

相关文章:

python - 在Python中将函数参数名称传递给另一个函数

python - 在 Ubuntu 9.04 上构建 Numpy 1.6.1 时遇到问题——没有 __config__.py

python - 检查 float 是否接近存储在数组中的任何 float

python - 使用多个输入训练 Keras 模型

python - scikit learn TSNE 转换应用于词向量时返回奇怪的结果

python - 无法在 venv 中安装 pandas

python - 使用 tkfiledialog 打开 excel 文件

python - 为什么不使用 Scipy 的 FFT 代码结果与 Scipy FFT 不相似?

python - 具有任意尺寸的 Cython ndarray

具有很少非零(非常稀疏)的 Python 洗牌数组