Начинающий в Python здесь, я с трудом обворачиваю голову вокруг векторизации своих циклов «для». У меня есть двумерный массив numpy, содержащий только два значения -1 и 1. Для каждого столбца и строки я хочу выполнить следующую операцию: установить все значения -1, встречающиеся до первого момента, когда 1 встречается в 0. Может ли это быть векторизован? Даже без сбоев, если в строке/столбце нет 1, и поэтому вся строка/столбец должна быть установлена в 0?Можно ли векторизовать операцию этого массива в python?
1
A
ответ
3
Вот один Векторизованных подход -
mask = a==1
a[~np.maximum.accumulate(mask,axis=0)] = 0
a[~np.maximum.accumulate(mask,axis=1)] = 0
Пример запуска -
In [39]: a
Out[39]:
array([[ 1, -1, 1, -1, -1],
[ 1, 1, -1, 1, -1],
[-1, 1, -1, 1, -1],
[ 1, -1, -1, -1, -1]])
In [40]: mask = a==1
In [41]: a[~np.maximum.accumulate(mask,axis=0)] = 0
In [42]: a[~np.maximum.accumulate(mask,axis=1)] = 0
In [43]: a
Out[43]:
array([[ 1, 0, 1, 0, 0],
[ 1, 1, -1, 1, 0],
[ 0, 1, -1, 1, 0],
[ 1, -1, -1, -1, 0]])
+0
Очень приятное решение, спасибо большое! – Adrien
Смежные вопросы
- 1. Как «векторизовать» эту операцию?
- 2. Можно ли векторизовать следующий цикл?
- 3. Как векторизовать эту операцию замены?
- 4. Как векторизовать эту кумулятивную операцию?
- 5. Как векторизовать операции массива в Python
- 6. Как векторизовать эту операцию в Matlab?
- 7. Векторизовать расширение массива numpy
- 8. Могу ли я векторизовать этот код Python?
- 9. Как векторизовать векторно-матричную поэтапную операцию?
- 10. В matlab можно ли векторизовать в нескольких измерениях?
- 11. Как можно векторизовать расчет энтропии?
- 12. Как векторизовать операцию в 2-мерной матрице в Matlab
- 13. Как можно векторизовать цикл while?
- 14. векторизовать NumPy тройное произведение на 2D массива
- 15. Можно ли векторизовать процедурные операции (для/если) в Matlab?
- 16. Matlab: Можно ли векторизовать условное построение в цикле?
- 17. Можно ли векторизовать последовательное обновление элементов вектора в R?
- 18. Как я могу векторизовать операцию над структурой в Matlab?
- 19. Можно ли векторизовать операции над подматрицами (и подвекторами)?
- 20. Можно ли добиться умножения массива с использованием этого подхода
- 21. Можно ли избежать этого подзапроса?
- 22. векторизовать фильтр для подпоследовательности массива в Matlab
- 23. Как векторизовать набор элементов в python
- 24. Как векторизовать следующий код python?
- 25. Обработать невыровненную часть двойного массива, векторизовать остальные
- 26. векторизовать среднее число на срезах массива
- 27. Как, когда и что векторизовать в python?
- 28. Можно ли векторизовать этот код Python, содержащий 1D и 2D массивы numpy?
- 29. Можно ли выполнить операцию INSERT-SELECT с помощью Rails API?
- 30. Можно ли выполнить арифметическую операцию по значению атрибута в XML
Можете ли вы дать некоторые входные и выходные выборки? – Eric