我有一个清单
A = [1,6,3,8,5,5,2,1,2,10]
Run Code Online (Sandbox Code Playgroud)
我想重复这样的数字:
A = [1,6,6,6,6,6,6,3,3,3,8,8,8,8,8,8,8,8,..... so on]
Run Code Online (Sandbox Code Playgroud)
即1重复一次,6重复六次,3重复三次等等......
我试过:
B=np.concatenate([([x]*x) for x in A], axis=0)
Run Code Online (Sandbox Code Playgroud)
但它乘以相应的数字,我得到了这个结果:
B = [1,36,36,36,36,36,36,9,9,9,.....so on]
Run Code Online (Sandbox Code Playgroud)
当我在做:
B=np.concatenate([([x]*3) for x in A], axis=0)
Run Code Online (Sandbox Code Playgroud)
这给了我:
B = [1,1,6,6,3,3,8,8... so on]
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
Ant*_*uis 13
您可以在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)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> 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])
Run Code Online (Sandbox Code Playgroud)
小智 6
使用NumPy的repeat函数可以得到解决方案
import numpy as np
np.repeat(A, A)
Run Code Online (Sandbox Code Playgroud)
你应该使用嵌套循环
l = [1, 6, 3]
nl = []
for number in l:
for i in range(number):
nl.append(number)
print(nl)
Run Code Online (Sandbox Code Playgroud)
或使用列表理解
l = [1,6,3]
nl = [number for number in l for i in range(number)]
#[1, 6, 6, 6, 6, 6, 6, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)