第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用正則表達式匹配圖形間隔

使用正則表達式匹配圖形間隔

瀟瀟雨雨 2023-01-04 16:42:16
假設我有一組數(shù)字:arr=[1, 2, 3, 4, 5, 4, 3, 2, 1]。常規(guī)正則表達式將其基本單位/文字作為字符。我想知道是否有一種方法可以將“對象”作為基本單位,用于 object [a,b]。現(xiàn)在我想回答這個問題,“是否arr包含至少 2 個長度為 3 且具有正梯度的區(qū)間?” . 我在想我可以通過用[a,b]對象替換字符來模仿正則表達式,其中a是間隔的大小,是在該間隔 ( )b上運行的函數(shù)。gradient_pos該函數(shù)將返回True或False取決于是否滿足條件。例如,要回答上述問題,您會查詢:[3,gradient_pos]{2,}您將看到語法遵循所有正則表達式規(guī)則,除了我們不是查看字符,而是查看[a,b]有效評估為Trueor的對象False。這個想法是,正則表達式會嘗試匹配滿足gradient_pos. 那有意義嗎?我知道這很抽象,但如果有人能幫助我實現(xiàn)這樣的目標,我將不勝感激!謝謝!
查看完整描述

1 回答

?
動漫人物

TA貢獻1815條經(jīng)驗 獲得超10個贊

您可以將其視為正則表達式問題。所以你的數(shù)組會變成:


import numpy as np

arr=[1, 2, 3, 4, 5, 4, 3, 2, 1]

arr = np.array(arr)

arr_as_str=''.join(map(str,np.sign(arr[1:]-arr[:-1])+1))

我得到了不包括最后一個元素的梯度,并將sign函數(shù)從 (-1,+1) 轉(zhuǎn)移到 (0,2)。這樣做的原因是為了避免字符串表示中的減號。

所以現(xiàn)在你可以像往常一樣應用正則表達式匹配:

  • 負梯度:0

  • 零梯度:1

  • 正梯度:2

您的“3 個連續(xù)正梯度”查詢將如下所示:

matches=list(re.finditer('(?=(2{3}))',arr_as_str))

由于存在重疊的正則表達式匹配項,因此您必須像以下那樣使用先行查找: Python regex find all overlapping matches?

您可以使用起始索引引用原始數(shù)組,而且您知道序列有多長:

matches[1].start()

我建議使用這種方法是因為您似乎對正則表達式很滿意。但是,如果您有興趣探索其他方法,我建議您查看形態(tài)過濾,這將是我的第一選擇


查看完整回答
反對 回復 2023-01-04
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號