import numpy as np def alt(a, end, window, start=0, step=1): bin_starts = np.arange(start, end+1-window, step) bin_ends = bin_starts + window last_index = np.searchsorted(a, bin_ends, side='right') first_index = np.searchsorted(a, bin_starts, side='left') return last_index - first_index def sliding_count(a, end, window, start=0, step=1): bins = [(x, x + window) for x in range(start, (end + 1) - window, step)] counts = np.zeros(len(bins)) for i, rng in enumerate(bins): count = len(a[np.where(np.logical_and(a>=rng[0], a<=rng[1]))]) counts[i] = count return counts a = np.array([1, 5, 8, 11, 14, 19]) end = 20 window = 10 print(sliding_count(a, end, window)) # [3. 4. 3. 3. 4. 4. 3. 3. 3. 3. 3.] print(alt(a, end, window)) # [3 4 3 3 4 4 3 3 3 3 3]
Как работает alt:
Генерация начальных и конечных значений бинов:
In [73]: bin_starts = np.arange(start, end+1-window, step); bin_starts Out[73]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) In [74]: bin_ends = bin_starts + window; bin_ends Out[74]: array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
Поскольку
a
в отсортированном порядке, вы можете использоватьnp.searchsorted
найти первый и последний индекс вbin_starts
иbin_ends
, где подходит каждое значение вa
:In [75]: last_index = np.searchsorted(a, bin_ends, side='right'); last_index Out[75]: array([3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6]) In [76]: first_index = np.searchsorted(a, bin_starts, side='left'); first_index Out[76]: array([0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3])
count
- это просто разница в индексах:In [77]: last_index - first_index Out[77]: array([3, 4, 3, 3, 4, 4, 3, 3, 3, 3, 3])
Вот перфплот , сравнивающий производительность
alt
сsliding_count
как функцию длиныa
:import perfplot def make_array(N): a = np.random.randint(10, size=N) a = a.cumsum() return a def using_sliding(a): return sliding_count(a, end, window) def using_alt(a): return alt(a, end, window) perfplot.show( setup=make_array, kernels=[using_sliding, using_alt], n_range=[2**k for k in range(22)], logx=True, logy=True, xlabel='len(a)')
Perfplot также проверяет, что значение, возвращаемое
using_sliding
, равно значению, возвращенномуusing_alt
.Идея Мэтта Тиммерманса , « вычесть
position_in_a
из подсчета для этого бина » привела в действие это решение.
Я перехожу к www.domaintools.com и ввожу доменное имя в поиске Whois.
Когда их запись Whois обнаружится, посмотрите на Сервер имен. Это говорит Вам, которые хостинговая компания, и как добавленная премия, также говорит Вам количество доменов в том хосте.
Я не знаю, есть ли у них какие-либо объемные сервисы все же. Мне только были нужны по одному поиски.
Если у Вас есть доступ к машине Linux, можно использовать jwhois на IP-адресе. Таким образом, необходимо было бы разрешить имя хоста к IP-адресу (который Вы могли сделать ping использования, если бы Вы хотели использовать сценарий оболочки), и затем jwhois IP-адрес, который будет (обычно) автоматически искать его в ARIN / APNIC / ГОТОВЫЙ как соответствующий. Это не на 100% точно, но это почти всегда работает.
С другой стороны, можно купить доступ к базе данных GeoIP.