numpy的嵌套列表理解

时间:2019-03-20 14:29:36

标签: python numpy list-comprehension

我有一个似乎无法解决的问题。

我正在从文件的行(每行30个值的100行)中构建一个形状为(100,30)的numpy数组,我需要将此数组做成具有平均值的形状(100,)原始数组每一行的 n 个最后值的值。

我的目标是在同一行中做到这一点,所以我尝试了嵌套列表理解,但是我觉得完全迷失了方向,我不确定自己在做什么。

这是到目前为止我得到的,这给了我正确的形状数组,但是(我相信)值有误。

$comment = new App\Person(['name' => 'test']);

$company= App\Company::find(1);

$company->people()->save($person);

输入和输出应类似于:

def perf_n_last(n):
    a = np.array([np.mean([i for j in range(len(i)-1, len(i)-(n+1), -1)]) for i in np.loadtxt('myfile.txt')])
    print(a.shape) #outputs (100, )

我也乐意接受有关列表切片的建议。谢谢您的帮助!

1 个答案:

答案 0 :(得分:3)

如果我正确地理解了您的问题,那么假设2d数组中的每一行都具有相同的长度,那么实际上可以使用numpy很快完成此操作:

{
  id: "d6dd8228-e0a6-4cb7-ab83-50ca5a937d45"
  image: "https://zuomod.ca/image/cache/catalog/products/2018/Single/medium/50105-1-800x800.jpg"
  inQueue: false
  indicatorImg: "https://cdn.shopify.com/s/files/1/0003/9252/7936/files/Level-0.png"
  saved: false
  sku: "50105"
  title: "Interstellar Ceiling Lamp"
}

加载文件,切片以包括所有行,但仅包括最后的def perf_n_last(n): return np.loadtxt("myfile.txt")[:,-n:].mean(1) 列,并取每个结果行的平均值。