如何在python中重复列表中的数字?
我有一个清单
A = [1,6,3,8,5,5,2,1,2,10]
我想重复这样的数字:
A = [1,6,6,6,6,6,6,3,3,3,8,8,8,8,8,8,8,8,..... so on]
即1重复一次,6重复六次,3重复三次等等......
我试过:
B=np.concatenate([([x]*x) for x in A], axis=0)
但它乘以相应的数字,我得到了这个结果:
B = [1,36,36,36,36,36,36,9,9,9,.....so on]
当我在做:
B=np.concatenate([([x]*3) for x in A], axis=0)
这给了我:
B = [1,1,6,6,3,3,8,8... so on]
我在这里做错了什么?
回答
您可以在numpy不使用for循环的情况下执行此操作。
np.repeat(a, repeats)将重复输入数组,a根据repeats哪个指定每个元素的重复次数。
import numpy as np
A = [1,6,3,8,5,5,2,1,2,10]
B = np.repeat(A,A)
输出:
>>> array([ 1, 6, 6, 6, 6, 6, 6, 3, 3, 3, 8, 8, 8, 8, 8, 8, 8,
8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 1, 2, 2, 10,
10, 10, 10, 10, 10, 10, 10, 10, 10])
回答
使用NumPy的repeat函数可以得到解决方案
import numpy as np
np.repeat(A, A)