Операция векторизации в nummy
Мне дан простой массив дат (дата - это число от 0 до 371).
dates = [234, 12, 343, ...]
и и пустой массив date_counter
(размером 372).
date_counter = [0, 0, ..., 0]
За каждую дату от dates
Я хотел бы увеличить date_counter
, Как я могу сделать эту операцию векторизованной?
2 ответа
Подсчитайте количество вхождений для значения, а затем обновите счетчик даты.
Например, чтобы получить приращение:
unique, counts = np.unique(dates, return_counts=True)
А потом:
date_counter[unique] += counts
Я думаю np.histogram
твой друг здесь Он делает именно то, что вы просите: подсчитывает предметы и складывает их в "ведра". Меньший (читаемый человеком) пример:
In [9]: vals = [9, 0, 1, 2, 2, 9, 3, 7, 8, 9, 9]
In [10]: date_counter, _ = np.histogram(vals, bins=np.arange(11)) # 11 -> 373 for your case
In [11]: date_counter
Out[11]: array([1, 1, 2, 1, 0, 0, 0, 1, 1, 4], dtype=int64)
Каждый индекс соответствует количеству элементов со значением, равным таковому из указанного индекса (т.е. последнее число в date_counter
является 4
, расположенный по указателю 9
это означает, что есть четыре 9
s) по желанию.
НТН.