1

你好。我对这个问题有些麻烦:

  1. 我有一个清单,例如a=[1,4,5,7,10]
  2. 我需要另一个列表,其中包含从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]`

因此,未选择的元素必须为零。

任何建议,将不胜感激

4

3 回答 3

1

将问题反转为“用 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]
于 2018-05-02T09:15:35.843 回答
0

会有更好的解决方案,但这可以工作:

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

于 2018-05-02T09:10:41.227 回答
-1
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)
于 2018-05-02T09:08:50.950 回答