你好。我对这个问题有些麻烦:
- 我有一个清单,例如
a=[1,4,5,7,10]
- 我需要另一个列表,其中包含从a
(b = np.random.choice(a,3,replace=False)
-> b = [4,7,10]中随机选择的元素
但b的长度必须与 相同len(a)
。我想我用那个文本把某人弄糊涂了,所以这里是例子:
1. `a = [1,4,5,7,10]`
2. `b = [0,4,0,7,10]`
因此,未选择的元素必须为零。
任何建议,将不胜感激
将问题反转为“用 0 替换随机列表条目”。那么问题就变成了如何决定是否将任何值设置为 0。在这里,我们使用每个值的某个随机机会;您需要将其替换为您拥有的任何其他特定标准:
import random
a = [1,4,5,7,10]
b = [0 if random.randint(0, len(a)) < 2 else i for i in a]
会有更好的解决方案,但这可以工作:
import numpy as np
a = np.array([1,4,5,7,10])
b = np.random.choice(np.arange(len(a)), 3, replace=False)
out = np.zeros(len(a), dtype=np.int)
out[b] = a[b]
print(out)
请注意,我使用choice
的是 in 的索引列表a
,而不是 的实际值a
。
import random
a = [1, 4, 5, 7, 10]
b = random.sample(a, len(a))
for i in range(len(b)):
if b[i] != a[i]:
b[i] = 0
print('a:', a)
print('b:', b)