结构化数据变平,如何通过索引恢复结构?

时间:2019-11-13 20:21:27

标签: python numpy dictionary for-loop

我有一个具有层次结构的数组。它变得扁平。我想找回类似的结构。也许作为字典。

一个例子:

flat_array = np.linspace(0,99,100)
_ = np.arange(0,10)
idx = np.repeat(_,10)

这样:

dict = { 0:[1,2,3,4,5,6,7,8,9],
         1:[10,11,12,13,14,15,16,17,18,19]
         2:[20, ..., 29]
          : [...]

1 个答案:

答案 0 :(得分:0)

以防万一,这是我想出的解决方案。

a = {}
for i,key in enumerate(idx):
    if key not in a:
          a[key] = []
    a[key].append(array[p])
a 

{0: [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0],
 1: [10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0],
 2: [20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0],
 3: [30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0],
 4: [40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0],
 5: [50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0],
 6: [60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0],
 7: [70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0],
 8: [80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0],
 9: [90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0]}
相关问题