Привет. У меня проблемы с этим вопросом:
a=[1,4,5,7,10]
(b = np.random.choice(a,3,replace=False)
-> b = [4,7,10]Но длина б должна быть такой же, как у len(a)
. Думаю, я запутала кого-то этим текстом, поэтому вот пример:
1. `a = [1,4,5,7,10]`
2. `b = [0,4,0,7,10]`
Итак, элементы, которые не были выбраны, должны быть нулями.
Мы ценим любые предложения
да, ваша логика кажется гораздо более питонической, чем моя. Есть случайный шанс, что каждое значение станет 0.
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)
Скорее всего, это ничего не дает.
Теперь весьма вероятно, что он устанавливает все на 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
.
Вопрос не помечен numpy
.
Обратный вопрос к «замена случайных записей в списке на 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]
Обратный вопрос к "замена случайных записей списка на
0
". Тогда возникает вопрос, как решить для любого значения, устанавливать его на0
или нет. Вы хотите получить определенное количество значений, отличных от0
, или есть определенный шанс, что каждое значение станет0
?