종료되었습니다. 이 질문은
주제에서 벗어난 . 현재 답변을 받고 있지 않습니다.
댓글
답변
Position
를 사용하여 지정된 간격 (예 : Matlab의 find)에서 모든 값의 배열 내에서 위치 / 인덱스를 찾을 수 있습니다. 예 :
pos = Position[a, _?((0.3 < # < 0.7) &)]
또는
pos = Position[a, x_ /; (0.3 < x < 0.7)]
값이 0.3에서 0.7 사이입니다. 요소는 a
에서
Extract[a, pos]
를 사용하여 추출 할 수 있습니다. 요청 된 예 :
t = {a, b, c, d, e}; ctl = {2.3, 0, 5, 0, 0}; pos = Position[ctl, _?((# > 2) &)] Extract[t, pos] {{1}, {3}} {a, c}
주석에서 JM이 제안한대로 Pick
를 사용할 수도 있습니다.
Pick[t, Thread[ctl > 2]] {a, c}
답변
KeySelect
<와 함께 PositionIndex
를 사용합니다. / div>는 동일한 배열에 대해 여러 테스트를 사용해야하는 경우 좋은 접근 방식입니다.
In[1]:= T = {a, b, c, d, e}; Ctl = {2.3, 0, 5, 0, 0}; In[2]:= index = PositionIndex[Ctl] Out[2]= <|2.3 -> {1}, 0 -> {2, 4, 5}, 5 -> {3}|> In[3]:= Extract[T, Values@KeySelect[index, Positive]] Out[3]= {a, c}
댓글
답변
일부 우스꽝 스러움 (일부 답변 제공) :
t = {a, b, c, d, e}; ctl = {2.3, 0, 5, 0, 0};
다양 함 :
Pick[t, Positive@ctl] (* JM*) Extract[t, Position[ctl, _?Positive]] (* bill s *) Cases[Transpose[{t, ctl}], {x_, _?Positive} :> x] First /@ Select[Transpose[{t, ctl}], #[[2]] > 0 &] Last@Reap[Sow @@@ (Transpose@{t, ctl}), _?Positive, Sequence @@ #2 &] True /. GroupBy[Transpose[{t, ctl}], Positive[#[[2]]] & -> First]