将列添加到列表中或添加行并转置

时间:2020-03-03 09:14:59

标签: python numpy dataset

我正在读取json文件的特定值,我想将这些(十万个)放在一个数组中,所以我想到了不同的可能性:

来自“ A”

Json file 0:[x0,y0,x1,y1,x2,y2,...]
Json file 1:[x0,y0,x1,y1,x2,y2,...]

到“ B”

[[x0,x0,x0,x0,...][y0,y0,y0,....]],[x1,x1,x1,x1,...][y1,y1,y1,....],[]...]

然后,我对每个'B'数组进行简单的运算。

要到达那里,我想到了3种不同的方法:

  1. 将“ A”中的所有列表逐行添加到一个大列表中并转置(逐行添加很容易,但是转置很昂贵)
# read row per row
for key, key2, key3:
   dic[key][key2][key3].append(original_frame[key][key2][0::3])

# compute for transposed
for list in dic[key][key2][key3].T.tolist():
   compute mean & stdev for list

# takes 6.3 s
  1. 将A列中的所有列表添加到一个大列表中(按列添加需要针对每个行循环执行,并在末尾追加,但不能转置)
# read column per column
for key, key2, key3, i:
   dic[key][key2][key3][i].append(original_frame[key][key2][0::3][i])

# compute for original list
for list in dic[key][key2][key3]:
   compute mean & stdev for list

# takes 7.74 s
  1. 通过np.c _
  2. 将A列中的所有列表逐列添加到一个大np.array中
# stack np.arrays
for key, key2, key3:
   dic[key][key2][key3] = np.c_[dic[key][key2][key3], original_frame[key][key2][0::3]])

# compute for original list
for list in dic[key][key2][key3]:
   compute mean & stdev for list

# takes 26.5 s

5个目录(关键字),每个目录(关键字2)〜2000个文件,5个关键字(关键字3),每个关键字(i)大约150个数字

因此,似乎每行添加一行并转置是最快的,这就是为什么我很困惑,我期望完全相反。我现在在一个较小的数据集上对其进行了测试,因此恐怕转置会以更多的值爆炸,您对此有何看法。也许还有我没想到的另一种可能性?

0 个答案:

没有答案
相关问题