无法对此快速找到答案,这似乎非常简单,但我不明白。我想进行以下转换(对于本示例,使用虚构函数transform
):
a=[0 0 0 1 0 0 0 0];
b=(-1:2); %rule to transform for every true value in [a], -1:2 should be true
transform(a,b) %should output [0 0 1 1 1 1 0 0]
a=[0 0 0 1 0 0 0 0 1 1 0 0 0]; %another example
transform(a,b) %should output [0 0 1 1 1 1 0 1 1 1 1 1 0];
是否可以使用逻辑运算符快速完成此转换?
编辑:我尝试过
a(find(a)'+(-1:2))=1 %requires matlab>2016 if I'm not mistaken, otherwise replace + sign with bsxfun(@plus,...)
但是我正在寻找一个可能的功能,该功能无需更改a
和不使用find
(因为使用find kind会失败使用逻辑矩阵/索引的目的)
答案 0 :(得分:2)
我找到了一个优雅的oneliner,可以解决您的问题:
from bs4 import BeautifulSoup as bs
html = '''
<html>
<head></head>
<body>
<ul class="sub-menu">
<li class="menu-item menu-item-type-post_type menu-item-object-post menu-
item-20588" id="menu-item-20588"><a href="http://www.air-
shows.org.uk/2018/06/uk-airshow-calendar-2019/">UK Airshow Calendar 2019</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-post menu-
item-22412" id="menu-item-22412"><a href="http://www.air-
shows.org.uk/2018/07/european-airshow-calendar-2019/">European Airshow Calendar 2019</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category
menu-item-18245" id="menu-item-18245"><a href="http://www.air-
shows.org.uk/category/display-team-schedule/">Latest Display Team Dates</a></li>
</ul>
</body>
</html>
'''
soup = bs(html, 'lxml')
all_items = soup.select('.sub-menu li,.sub-menu a')
events = [item.text for item in all_items[0::2]]
links = [item['href'] for item in all_items[1::2]]
print(events, links)
希望有帮助!
答案 1 :(得分:2)
如果您拥有图像处理工具箱,则可以使用imdilate
:
nh(max(abs([b(1),b(end)]))+1+b) = true;
result = imdilate(a, nh);