首页 > 解决方案 > 作为位置函数的 Bin 平均值

问题描述

我想有效地计算飞机多个区域的变量(比如温度)的平均值。

我基本上想做以下事情。

import numpy as np
num = 10000

XYT = np.random.uniform(0, 1, (num, 3))
X = np.transpose(XYT)[0]
Y = np.transpose(XYT)[1]
T = np.transpose(XYT)[2]

size = 10 
bins = np.empty((size, size))

for i in range(size):
    for j in range(size):
        if rescaled X,Y in bin[i][j]:
            bins[i][j] = mean T

标签: pythonnumpy

解决方案


我会使用 pandas(尽管我确信你可以用 vanilla numpy 实现基本相同)

df = pandas.DataFrame({'x':npX,'y':npY,'z':npZ})
# solve quadrants
df['quadrant'] = (df['x']>=0)*2 + (df['y']>=0)*1
# group by and aggregate
mean_per_quadrant = df.groupby(['quadrant'])['temp'].aggregate(['mean'])

您可能需要创建多个象限截止以获得独特的分组

例如(df['x']>=50)*4 + (df['x']>=0)*2 + (df['y']>=0)*1,将向我们的组添加额外的 2 个象限(一个 y>=0,一个 y<0)(只要确保使用 2 的幂)

在此处输入图像描述


推荐阅读