Предположим, что у вас есть два одинаковых размера. Первый список содержит только нули и единицы, а начальное значение второго списка равно некоторому фиксированному числу. Другие значения второго массива зависят от одних и тех же значений первого списка. Связь между ними заключается в том, что если значение в первом списке равно 0, одноиндексное значение второго списка равно предыдущему, во всех остальных случаях равно некоторому другому значению. Чтобы уточнить мой вопрос, я написал код ниже с помощью цикла for. Каков способ решить эту проблему без цикла?Логическая итерация по массиву numpy
Code
a = np.array([0, 1, 0, 0, 0, 1, 0, 0, 1])
b = np.zeros_like(a)
b[0] = 5
for i in range(1, a.size):
if a[i] == 0:
b[i] = b[i-1]
else:
b[i] = np.random.randint(5)
Так как ваша конструкция явно зависит от предыдущих итераций, это не просто на все, что он может быть векторизациями. Не обязательно * невозможно *, но сложно. –
Если ваш массив 'a' не содержит смежных, это можно сделать легко. Это случай, случайно? –
Я знаю, это сложно. Но я пытаюсь найти это, есть ли прямое решение, например, функция «scipy.signal.lfiler». С этой функцией я могу выполнить численное предыдущее значение, зависящее от итерации. –