以下是具有我想要的一些简单示例数据的功能的代码。基本上我使用np.digitize对数据进行了分箱,然后根据此question计算了一个列索引。众所周知,bin_idx在有帮助的情况下永不减少。如何在没有显式循环的情况下索引获取2D数组?一个复杂因素是每行/每个箱中的值的数量变化。我稍后会对每个bin / row执行不同的统计,max只是一个例子。
import numpy as np
x = np.arange(10)
bin_idx = np.array([0, 0, 0, 1, 2, 3, 3, 4, 4, 4])
col_idx = np.array([0, 1, 2, 0, 0, 0, 1, 0, 1, 2])
binned = np.ones((bin_idx[-1]+1, np.max(col_idx)+1)) * np.nan
for i in range(len(x)):
binned[bin_idx[i], col_idx[i]] = x[i]
print(binned)
row_max = np.nanmax(binned, 1)
print(row_max)
答案 0 :(得分:3)
Numpy索引允许您将序列作为索引传递。另请查看下面使用的Numpy的full方法来创建binned
数组。
binned = np.full((bin_idx[-1]+1, np.max(col_idx)+1), np.nan)
binned[bin_idx, col_idx] = x