Вы можете перебирать каждый элемент во втором массиве и использовать этот элемент для создания маски, а затем суммировать все значения True
:
output = []
for el in array2:
output.append(np.sum(array1 < el))
Вывод:
[111 ]Ваш подход почти правильный. Я немного прибрался. Вы можете перебирать сами элементы вместо их индексов.
failed = []
for el2 in array2:
number1 = 0
for el1 in array1:
if el1 < el2:
number1 += 1
failed.append(number1)
Вывод:
[1, 2, 3, 5, 6]
Я бы все равно использовал первый ответ, хотя он должен быть немного быстрее.
Даже при том, что Вы могли бы думать, что это устарело, я всегда находил, что статья Simon Willison об Условном выражении ДОБИРАЕТСЯ, чтобы быть более, чем полезной. Пример находится в PHP, но это столь просто, что можно адаптировать его к другим языкам. Здесь это - пример:
function doConditionalGet($timestamp) {
// A PHP implementation of conditional get, see
// http://fishbowl.pastiche.org/archives/001132.html
$last_modified = substr(date('r', $timestamp), 0, -5).'GMT';
$etag = '"'.md5($last_modified).'"';
// Send the headers
header("Last-Modified: $last_modified");
header("ETag: $etag");
// See if the client has provided the required headers
$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?
stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :
false;
$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) :
false;
if (!$if_modified_since && !$if_none_match) {
return;
}
// At least one of the headers is there - check them
if ($if_none_match && $if_none_match != $etag) {
return; // etag is there but doesn't match
}
if ($if_modified_since && $if_modified_since != $last_modified) {
return; // if-modified-since is there but doesn't match
}
// Nothing has changed since their last request - serve a 304 and exit
header('HTTP/1.0 304 Not Modified');
exit;
}
С этим можно использовать глаголы HTTP, ДОБИРАЮТСЯ или НАПРАВЛЯЮТСЯ (я думаю, что это также возможно с другими, но я не вижу причины использовать их). Все, что необходимо сделать, добавляет также If-Modified-Since
или If-None-Match
с соответствующими значениями заголовков Last-Modified
или ETag
отправленный предыдущей версией страницы. С версии 1.1 HTTP это рекомендуется ETag
Last-Modified
, но оба сделают работу.
Это - очень простой пример того, как условное выражение ПОЛУЧАЕТ работы. Сначала мы должны получить страницу обычный путь:
GET /some-page.html HTTP/1.1 Host: example.org
Первый ответ с условными заголовками и содержанием:
200 OK ETag: YourETagHere
Теперь условное выражение получает запрос:
GET /some-page.html HTTP/1.1 Host: example.org If-None-Match: YourETagHere
И ответ, указывающий на Вас, может использовать кэшированную версию страницы, поскольку только заголовки будут поставленными:
304 Not Modified ETag: YourETagHere
С этим сервер уведомил Вас, что не было никакой модификации к странице.
Я могу также рекомендовать Вам, другая статья об условном выражении ДОБИРАЕТСЯ: условное выражение HTTP ДОБИРАЕТСЯ для хакеров RSS.
Это - точная цель заголовка Завершающего тега, но это должно поддерживаться Вашей веб-платформой, или необходимо заботиться, что приложение правильно отвечает на запросы с Если-соответствием заголовков, If-Not-Match и Если-диапазоном (см. HTTP Ch 3.11).
Да, Вы можете и должны использовать HTTP-заголовки для маркировки страниц как неистекшие. Если они являются динамичными, хотя (PHP, ASPX, и т.д.) и/или управляемая база данных, необходимо будет вручную управлять установкой, Истекает заголовок/отправка HTTP, Не Измененный соответственно. ASP.NET имеет некоторые объекты SqlDependency для этого, но они все еще должны настраиваться и управляться. (Не уверенный, если PHP имеет что-то точно так же, как он, но существует, вероятно, что-то в ГРУШЕ если не...),
Вы можете, если это использует http заголовки ответа правильно, но это часто пропускается.
Иначе хранение локального md5-хеша содержания могло бы быть полезно для Вас (если нет более легкая строка в содержании, которую Вы могли сцепить). Это не идеально (потому что это - вполне медленный процесс), но это - опция.
Last-Modified
заголовок будет только полезен для Вас, если программист сайта явно установил его, чтобы быть возвращенным.
Для регулярной, статической страницы Last-Modified
метка времени последнего изменения файла HTML. Для динамично сгенерированной страницы сервер не может надежно присвоить a Last-Modified
оцените, поскольку это не имеет никакого реального способа знать, как содержание изменилось в зависимости от запроса, столько серверов не генерирует заголовок вообще.
Если Вы управляете страницей, то обеспечение Последнего Измененного заголовка устанавливается, гарантирует проверку на Last-Modified
успешно. Иначе Вам, вероятно, придется выбрать страницу, и любой выполняет regex для нахождения измененного раздела (например, дата/время в заголовке новостного сайта). Если никакой такой очевидный маркер не существует, то я был бы предложение второго Oli MD5 на содержании страницы как способ быть уверенным, что это изменилось.