Я не уверен, есть ли общий ответ на мой вопрос, но я задаюсь вопросом, является ли маскирование или нарезка массива «лучше» манипулировать только частями массива. С «лучше» я имею в виду производительность (скорость выполнения манипуляций, накладные расходы памяти, т. Е. Промежуточные массивы и т. Д.). Есть ли какое-либо эмпирическое правило о том, какой из них использовать?Нарезка или маскировка?
0
A
ответ
0
Таковы некоторые результаты, используя timeit
import numpy as np
x= np.arange(10000)
% timeit x[[np.arange(0,10000,2)]]
#output: 10000 loops, best of 3: 41.4 µs per loop
Назначение индексированных значений в другой массив
% timeit z = x[[np.arange(0,10000,2)]]
#output: 10000 loops, best of 3: 41.9 µs per loop
или, присваивая значения индексированного массива
% timeit x[[np.arange(0,10000,2)]] = 1
#output: 1000 loops, best of 3: 151 µs per loop
Теперь давайте попробуем такой же используя маскировка:
x = np.ma.array(np.arange(10000))
% timeit x.mask = [1 if i%2==0 else 0 for i in np.arange(10000)]
#output: 100 loops, best of 3: 11.6 ms per loop
Если у вас уже есть значения, маска хранится
maskValues = [1 if i%2==0 else 0 for i in np.arange(10000)]
% timeit x.mask = maskValues
# output: 1000 loops, best of 3: 712 µs per loop
Так индексирование в NumPy оказался проще и быстрее, для этого примера
Смежные вопросы
- 1. Маскировка SVGPattern
- 2. URL маскировка с помощью ВХоста или HTAccess
- 3. Бит сдвига, маскировка или бит полевой структуры?
- 4. маскировка или проверка текстового поля HTML
- 5. Маскировка ActionScript3
- 6. Маскировка и смещение
- 7. Маскировка прерываний: почему?
- 8. Нарезка словаря
- 9. Маскировка веб-страницы
- 10. Маскировка с использованием Kinetic.js
- 11. Нарезка графика
- 12. Маскировка с CSS
- 13. списки нарезка Python против векторов Нарезка R
- 14. нарезка DataFrame
- 15. нарезка Картины
- 16. Нарезка строки
- 17. Нарезка подстроки
- 18. маскировка в питона
- 19. Image Маскировка + Iphone SDK
- 20. GWT: Маскировка виджета
- 21. Маскировка Dropwizard с Datical
- 22. Маскировка в Matlab
- 23. Маскировка собес номер
- 24. Бит Маскировка бит регистра
- 25. Маскировка в прологе
- 26. маскировка в OpenCV
- 27. Маскировка в OpenGL ES
- 28. маскировка для keras BLSTM
- 29. пароль маскировка в C++
- 30. «Маскировка» анимации? iPhone SDK
«замаскирован» может быть истолковано как с помощью 'np.ma' или более простой 'my_array [my_boolean_mask]', который создает копию. Что ты имеешь в виду? – Julien
Нарезка будет лучше, потому что она освобождает память. В то время как маскирование хранит его в кеше. – thesonyman101
Я имел в виду 'np.ma'. Я понял 'my_array [my_boolean_mask]' как способ разрезания. – orange