Python numpy for循环,从列表创建列表并进行串联

时间:2019-01-24 08:38:02

标签: python arrays numpy

我有一个名为my_list的Python numpy列表,如下所示,我可以访问诸如my_list [0](第一级)和my_list [0] [0](第二级)等元素。

[array(['27103', '27106', '27104', '87115'],
       dtype='<U6'),
 array(['20049', '20033', '655155'],
       dtype='<U6'),...

对于列表第二级中的每个元素,我创建另一个包含3个元素的列表。因此,对于元素“ 27103”,存在一个新的长度为3的列表,对于元素“ 27106”,存在另一个具有3个元素的列表。

我的问题是如何合并新列表,以使计算也可以进行到第一级。我已经编写了以下代码:

temp_list = []
temp_list2 = []

for i in range(len(my_list)):
    for j in range(len(set(my_list[i]))):
        temp_list.append(list(x[np.where(df.index.isin(my_list[i]))[0][j]]))
    temp_list2.append(np.concatenate(temp_list))

给出如下结果:

[array(['111005', '112140', '627372', '639240', '672846', '71138', '10618',
        '110619', '639821', '668821', '672079', '672080'], dtype='<U6'),
 array(['111005', '112140', '627372', '639240', '672846', '71138', '10618',
        '110619', '639821', '668821', '672079', '672080', '109002',
        '112839', '26800', '112137', '652520', '667409', '104506',
        '110004', '110955'], dtype='<U6'),...

问题在于它从一开始就附加到temp_list2。我该如何防止这种情况,而只采取如下所示的相关部分?

[array(['111005', '112140', '627372', '639240', '672846', '71138', '10618',
        '110619', '639821', '668821', '672079', '672080'], dtype='<U6'),
 array(['109002', '112839', '26800', '112137', '652520', '667409', '104506',
        '110004', '110955'], dtype='<U6'),...

谢谢。

1 个答案:

答案 0 :(得分:0)

这样做很简单。

temp_list2 = []

for i in range(len(my_list)):
    temp_list = []
    for j in range(len(set(my_list[i]))):
        temp_list.append(list(x[np.where(df.index.isin(my_list[i]))[0][j]]))
    temp_list2.append(np.concatenate(temp_list))