我想将数组转换为另一个数组数组后的数组数组。我不知道该怎么做,这是数组:
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],[]]
我想保留空数组。
由于
答案 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
回答的原理相同;更直接,因为它只假设一个嵌套级别。