为了账号安全,请及时绑定邮箱和手机立即绑定

基于另一个重复列中的值

基于另一个重复列中的值

梦里花落0921 2021-10-26 16:10:10
假设我有一个数组(不一定是正方形)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 npmy_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']谢谢!
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

使用np.repeat:


my_array[:,0].repeat(my_array[:,1].astype(int))

# array(['name_1', 'name_1', 'name_1', 'name_2', 'name_2'], dtype='<U6')


查看完整回答
反对 回复 2021-10-26
?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以使用列表乘法和 的组合sum

sum(([my_array[i]] * my_array[i+1] for i in range(0, len(my_array), 2)), [])


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信