Операция векторизации в NumPy - PullRequest
0 голосов
/ 14 ноября 2018

Мне дан простой массив дат (date - это число от 0 до 371).

dates = [234, 12, 343, ...]

и пустой массив date_counter (размером 372).

date_counter = [0, 0, ..., 0]

Для каждой даты с dates я хотел бы увеличить date_counter.Как я могу сделать эту операцию векторизованной?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Я думаю 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 с) по желанию.

HTH.

0 голосов
/ 14 ноября 2018

Подсчитать количество вхождений для значения и затем обновить счетчик даты.

Например, чтобы получить приращение:

unique, counts = np.unique(dates, return_counts=True)

А затем:

date_counter[unique] += counts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...