按照另一个数组的结构将数组转换为数组数组

时间:2016-06-19 21:37:16

标签: arrays python-2.7 numpy

我想将数组转换为另一个数组数组后的数组数组。我不知道该怎么做,这是数组:

orig_array = [[0,1],[4],[3],[],[3,2,6],[]]
my_array = [2,0,1,3,3,4,5]

wanted_array = [[2,0],[1],[3],[],[3,4,5],[]]

我想保留空数组。

由于

4 个答案:

答案 0 :(得分:3)

获取orig_array中每个元素的长度,沿长度值执行累积求和,为我们提供my_array需要拆分的索引,最后使用np.split来实际执行分裂。因此,实现看起来像这样 -

lens = [len(item) for item in orig_array]
out = np.split(my_array,np.cumsum(lens))[:-1]

示例运行 -

In [72]: orig_array = np.array([[0,1],[4],[3],[],[3,2,6],[]])
    ...: my_array = np.array([2,0,1,3,3,4,5])
    ...: 

In [73]: lens = [len(item) for item in orig_array]
    ...: out = np.split(my_array,np.cumsum(lens))[:-1]
    ...: 

In [74]: out
Out[74]: 
[array([2, 0]),
 array([1]),
 array([3]),
 array([], dtype=int64),
 array([3, 4, 5]),
 array([], dtype=int64)]

答案 1 :(得分:2)

Angular-cli

注意:这会破坏值来自的数组。

答案 2 :(得分:1)

您可以执行以下操作:

net.ltgt.gwt.maven

试运行:

import copy

def reflect_array(orig_array, order):
    wanted_array = copy.deepcopy(orig_array)
    for i, part_list in enumerate(orig_array):
        for j, _ in enumerate(part_list):
            wanted_array[i][j] = order.pop()
    return wanted_array

答案 3 :(得分:1)

In [858]: my_array = [2,0,1,3,3,4,5]

In [859]: [[my_array.pop(0) for _ in range(len(x))] for x in orig_array]
Out[859]: [[2, 0], [1], [3], [], [3, 4, 5], []]

如果您不想更改b=my_array[:],请使用my_array

这与@karoly's回答的原理相同;更直接,因为它只假设一个嵌套级别。