하나의 이벤트에서 얼마나 많은 "일"이 경과 하는지를 계산할 수있는 알고리즘을 개발해야합니다 (목록에 저장된 참/거짓 목록에있는 Vec1). 다른 이벤트 (목록에 저장된 실제 통화/거짓 통화) Vec2). 다음과 같이 두 개의 목록은 다음과 같습니다두 이벤트 사이에 얼마나 많은 obs가 있는지 계산하는 알고리즘
Vec1 = [True, False, False, False, False, True, True, True, False, True, True, True, False, True, False, True, False, False, False, True]
Vec2 = [True, False, False, True, True, True, False, True, False, True, True, True, False, True, True, True, True, False, False, True]
이 더 나은 설명을 얻기 위해,의는 Vec1가 응답되어 가정 해 봅시다 "요한은 오늘 커피를 마시나요?" Vec2은 "Paul이 오늘 커피를 마셨습니까?"라고 대답합니다. 그래서,이 지표로 얻으려고하는 것은 "John drinks"이벤트와 "Paul drinks"이벤트 사이를 지나가는 일수입니다. 논리는 다음과 같이 구성 될 수 있습니다 :
1) 첫 번째 벡터에 "True"값을 찾고 그 날부터 계산을 시작합니다. 2) 두 번째 벡터에 "참"이 표시 될 때까지 카운트를 계속하십시오. 그 순간부터 카운터를 리셋하십시오.
외에도 지금 알고리즘의 끔찍한 구조trueVector1 = 0
trueVector2 = 0
countAct = False
Count = 0
while len(ValueInd) < len(Vec1):
while Vec1[trueVector1] == False:
ValueInd.append(Count)
trueVector1 += 1
countAct = True
trueVector2 = trueVector1
while countAct == True:
if Vec2[trueVector2] == True:
countAct = False
ValueInd.append(Count)
Count = 0
trueVector1 = trueVector2 + 1
else:
ValueInd.append(Count)
trueVector2 += 1
Count += 1
(즉, I : 내가 지금까지를 구축 할 수 있었다
ValueInd = []
:
결과의 빈 목록을 채우기 나중에 수정 될 것입니다.) 나는이 해결책이 작동하지 않는 적절한 해결책을 얻을 수 없다. 적절한 출력하는 동안, 내가 위에서 제공 한 자료에 따르면해야한다 :ValueInd = [0,0,0,0,0,0,0,1,1,2,1,1,0,1,2,1,0,0,0,0]
내가 실제로 얻을 출력 :
이ValueInd = [0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0]
누군가가 나를 도와 드릴까요? 더 자세한 설명이 필요한지 물어보십시오.
존은 15 일 캘린더에서 0, 4, 5, 8, 10 일에 커피를 마신다. 폴 (Paul)은 2 일, 4 일, 7 일, 8 일, 11 일에 15 일간 커피를 마 십니다. occurrencies 벡터는 따라서 다음과 같습니다
John = [T, F, F, F, T, T, F, F, T, F, T, F, F, F, F, F]
Paul = [F, F, T, F, T, F, F, T, T, F, F, T, F, F, F, F]
이 예제의 결과 벡터가 될 것입니다 :
Days = [0, 1, 2, 0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 0, 0, 0]
이 때문에 : 0) 존 음료와 바울이 카운트가 0으로 시작하지 않도록 ; 1) 아무도 커피를 마시지 않으므로 카운트가 1로 증가합니다. 2) Paul은 음료를 마 십니다. 따라서 카운트가 2로 증가한 다음 꺼집니다. 3) 카운트가 활성화되지 않습니다. 4) 둘 다 음료이므로 같은 날 카운트가 0으로 시작하고 끝납니다. 5) John은 음료를 마시 며, Paul은 그렇게하지 않습니다. 따라서 카운트가 활성화되고 0으로 시작됩니다. 6) 폴 마시없는 하루 -> 카운트 = 1 7) 폴 음료수 -> 카운트 = 2 및 0으로 재설정 8) 둘 다 마시므로 카운트가 0에서 시작하여 같은 날 끝납니다. 9) 그래서 카운트는 0으로 시작합니다. 10) 폴 음료가 있으므로 카운트는 1로 끝납니다. 11 - 15) 아무도 마셔서 카운트가 항상 0이됩니다.
당신의 설명을 이해하기가 다소 어려울 것 같습니다. –
@RaulGuiu, 나는 그것이 나이라고 확신한다;) 나는 질문을 편집하고 예제를 만들려고 노력할 것이다. 그것은 그 자체로 그리 명백하지 않은 개념 + 나의 아주 좋은 설명 기술이 아니다. –
이해하기 어려울뿐만 아니라 설명에서 두 번째 결과가 정확합니다. –