基于另一个重复列中的值

假设我有一个数组(不一定是正方形)


my_array = ['name_1', 3

            'name_2', 2]

我想最终得到一个列表(或 numpy 数组等),length 3+2=5其中前三个位置被分配到'name_1',下一个 2 到'name_2'. 因此输出将是


['name_1', 'name_1', 'name_1', 'name_2', 'name_2']

这是我迄今为止所做的;请问有没有更好的方法来做到这一点?


import numpy as np


my_array = np.array([['name_1', 3], ['name_2', 2]])

l = []

for i in range(my_array.shape[0]):

    x = [my_array[i, 0].tolist()] * np.int(my_array[i, 1])

    l.append(x)


flat_list = [item for sublist in l for item in sublist]

print(flat_list)

打印:


['name_1', 'name_1', 'name_1', 'name_2', 'name_2']

谢谢!


梦里花落0921
浏览 155回答 3
3回答

一只萌萌小番薯

使用np.repeat:my_array[:,0].repeat(my_array[:,1].astype(int))# array(['name_1', 'name_1', 'name_1', 'name_2', 'name_2'], dtype='<U6')

aluckdog

您可以使用列表乘法和 的组合sum:sum(([my_array[i]]&nbsp;*&nbsp;my_array[i+1]&nbsp;for&nbsp;i&nbsp;in&nbsp;range(0,&nbsp;len(my_array),&nbsp;2)),&nbsp;[])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python