Hellow。我对这个问题有些困难:
a=[1,4,5,7,10]
(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 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
的索引列表中使用a
,而不是a
的实际值。
答案 1 :(得分:0)
将问题反转到"用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]
答案 2 :(得分:-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)