존재하는 경우에만 배열에서 선행 및 후행 0을 잘라냅니다.

벤 그레인저

입력 배열의 선행 및 / 또는 후행 0을 잘라내려고합니다. 다음과 같은 질문에 대한 답변을 보았습니다.

MATLAB-벡터에서 선행 및 후행 0 제거

그리고 이것은 내 입력 배열이 실제로 0으로 시작 / 종료되지 않을 때까지 잘 작동합니다.

input = [ 1 2 0 3 4 0 0 0 0 ]

이것이 내 입력 배열이라면 위의 질문에 대한 대답은 필요한 값을 잘라낼 것입니다.

선행 / 후행 0을 제거 할 수있는 간결한 방법 (예 : 긴 'if'문 없음)이 있습니까?

명확히하기 위해 편집 :

find()함수를 사용하여 0이 아닌 인덱스 배열을 가져온 다음 다음과 같은 작업을 수행 할 수 있다는 것을 알고 있습니다 .

indexes = find(input)
trimmed_input = input( indexes(1):indexes(end) )

그러나 입력 배열에 후행 / 선행 0이 있고 0이 아닌 값 사이에 0이있을 수 있다는 보장이 없기 때문에 문제가 발생합니다. 따라서 내 입력 배열은 다음 중 하나가 될 수 있습니다.

input1 = [ 0 0 0 nonzero 0 nonzero 0 0 0 ]  =>  [ nonzero 0 nonzero ]
input2 = [ nonzero 0 nonzero 0 0 0 ]  =>  [ nonzero 0 nonzero ]
input3 = [ 0 0 0 nonzero 0 nonzero ]  =>  [ nonzero 0 nonzero ]

input4 = [ 0 0 0 nonzero nonzero 0 0 0 ]  =>  [ nonzero nonzero ]
input5 = [ 0 0 0 nonzero nonzero ]  => [ nonzero nonzero ]
input6 = [ nonzero nonzero 0 0 0 ]  => [ nonzero nonzero ]

그리고 위의 방법을 사용하여 input2또는 input3유지하려는 값을 트리밍합니다.

mpaskov

나는 지금 한 줄로 깔끔한 방법을 생각할 수 있지만 이것이 효과가 있다고 생각합니다.

if input(1)==0
    start = min(find(input~=0))
else
    start = 1;
end
if input(end)==0
    endnew = max(find(input~=0))
else
    endnew = length(input);
end
trimmed_input = input(start:endnew);
  • 0으로 시작하면 0이 아닌 첫 번째 요소를 찾아야합니다.
  • 0으로 끝나는 경우 0이 아닌 마지막 요소를 찾아야합니다.

편집하다

하, 하나의 라이너를 찾았습니다 :)

trimmed_input = input(find(input~=0,1,'first'):find(input~=0,1,'last'));

이것이 실제로 빠르거나 덜 복잡한 지 알 수 없습니다.


또 다른 대안 (@jrbedard의 의미를 이해함) :

trimmed_input = input(min(find(input~=0)):max(find(input~=0)));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Linux 셸 스크립트 : 존재하는 경우에만 프로그램을 실행하고 존재하지 않는 경우 무시합니다.

분류에서Dev

유효 숫자가있는 SI 접두사이지만 d3.js에서 후행 십진수 0을 잘라냅니다.

분류에서Dev

XSLT 2.0에서 문자열의 선행 및 후행 공백을 제거하는 방법은 무엇입니까?

분류에서Dev

문자열에서 선행 및 후행 0 제거

분류에서Dev

이미 존재하지 않는 경우에만 행을 추가하는 방법이 있습니까?

분류에서Dev

SQL 다른 테이블에 존재하지 않는 행 선택 및 찾기

분류에서Dev

BASH는 배열의 선행 및 후행 공백을 제거합니다.

분류에서Dev

정규식을 사용하여 필요한 경우 문자열에 선행 및 후행 슬래시를 추가합니다.

분류에서Dev

각 단어 뒤에 최대 하나의 선행 및 후행 개행을 삽입합니다.

분류에서Dev

! 존재하는 경우에만 특정 문자열로 시작하는 행에서 대체를 수행하려면 sed 및 sed 만 사용하십시오.

분류에서Dev

열에서 여러 0을 평균 0 및 후속 행으로 바꿉니다.

분류에서Dev

선행 및 후행을 제거하는 방법 ", ksh의 각 필드에서 각 행의 선행 및 후행 공백 제거

분류에서Dev

Haskell은 파일에서 후행 및 선행 공백을 제거합니다.

분류에서Dev

SQLite는 존재하지 않는 경우 기본 행을 선택합니다.

분류에서Dev

RegExp : 문자열에서 선행 및 후행 그룹이있는 경우 제거하는 방법

분류에서Dev

숫자가 0 인 경우 2D 배열에서 행을 0으로 만듭니다.

분류에서Dev

R에서 그룹별로 선행 및 후행 NA에 대한 행을 삭제하는 방법

분류에서Dev

선행 및 후행 0을 제거하고 결과를 소수점 두 자리에 표시

분류에서Dev

QML ListView는 1 행만 표시합니다 (열 및 행에 포함 된 경우).

분류에서Dev

Javascript는 문자열에서 모든 선행 및 후행 정크 문자를 제거합니다.

분류에서Dev

A 열이 조건을 충족하는 경우 A 열과 B 열에 선행 0을 붙여 넣습니다.

분류에서Dev

하이브 열에 대한 선행 및 후행 문자 제거

분류에서Dev

현재 및 이전 행의 값을 비교하고 Spark에서 필요한 경우 열 이후

분류에서Dev

이것이 모든 행을 추가하는 이유는 무엇입니까? 존재하는 경우에만 삽입 하시겠습니까?

분류에서Dev

MySql에서 존재하지 않는 행을 선택하는 방법은 무엇입니까?

분류에서Dev

주어진 열에서 NaN이 아닌 첫 번째 행 (또는 존재하지 않는 경우 한 행)을 선택하여 DataFrame 필터링

분류에서Dev

SQL : 두 번째 테이블에 존재하지 않는 유사 및 행 선택

분류에서Dev

파일 및 디렉토리 이름 모두에서 모든 선행 및 후행 공백을 재귀 적으로 제거합니다.

분류에서Dev

Python DataFrame : 존재하는 행 수에 따라 열에 값을 할당합니까?

Related 관련 기사

  1. 1

    Linux 셸 스크립트 : 존재하는 경우에만 프로그램을 실행하고 존재하지 않는 경우 무시합니다.

  2. 2

    유효 숫자가있는 SI 접두사이지만 d3.js에서 후행 십진수 0을 잘라냅니다.

  3. 3

    XSLT 2.0에서 문자열의 선행 및 후행 공백을 제거하는 방법은 무엇입니까?

  4. 4

    문자열에서 선행 및 후행 0 제거

  5. 5

    이미 존재하지 않는 경우에만 행을 추가하는 방법이 있습니까?

  6. 6

    SQL 다른 테이블에 존재하지 않는 행 선택 및 찾기

  7. 7

    BASH는 배열의 선행 및 후행 공백을 제거합니다.

  8. 8

    정규식을 사용하여 필요한 경우 문자열에 선행 및 후행 슬래시를 추가합니다.

  9. 9

    각 단어 뒤에 최대 하나의 선행 및 후행 개행을 삽입합니다.

  10. 10

    ! 존재하는 경우에만 특정 문자열로 시작하는 행에서 대체를 수행하려면 sed 및 sed 만 사용하십시오.

  11. 11

    열에서 여러 0을 평균 0 및 후속 행으로 바꿉니다.

  12. 12

    선행 및 후행을 제거하는 방법 ", ksh의 각 필드에서 각 행의 선행 및 후행 공백 제거

  13. 13

    Haskell은 파일에서 후행 및 선행 공백을 제거합니다.

  14. 14

    SQLite는 존재하지 않는 경우 기본 행을 선택합니다.

  15. 15

    RegExp : 문자열에서 선행 및 후행 그룹이있는 경우 제거하는 방법

  16. 16

    숫자가 0 인 경우 2D 배열에서 행을 0으로 만듭니다.

  17. 17

    R에서 그룹별로 선행 및 후행 NA에 대한 행을 삭제하는 방법

  18. 18

    선행 및 후행 0을 제거하고 결과를 소수점 두 자리에 표시

  19. 19

    QML ListView는 1 행만 표시합니다 (열 및 행에 포함 된 경우).

  20. 20

    Javascript는 문자열에서 모든 선행 및 후행 정크 문자를 제거합니다.

  21. 21

    A 열이 조건을 충족하는 경우 A 열과 B 열에 선행 0을 붙여 넣습니다.

  22. 22

    하이브 열에 대한 선행 및 후행 문자 제거

  23. 23

    현재 및 이전 행의 값을 비교하고 Spark에서 필요한 경우 열 이후

  24. 24

    이것이 모든 행을 추가하는 이유는 무엇입니까? 존재하는 경우에만 삽입 하시겠습니까?

  25. 25

    MySql에서 존재하지 않는 행을 선택하는 방법은 무엇입니까?

  26. 26

    주어진 열에서 NaN이 아닌 첫 번째 행 (또는 존재하지 않는 경우 한 행)을 선택하여 DataFrame 필터링

  27. 27

    SQL : 두 번째 테이블에 존재하지 않는 유사 및 행 선택

  28. 28

    파일 및 디렉토리 이름 모두에서 모든 선행 및 후행 공백을 재귀 적으로 제거합니다.

  29. 29

    Python DataFrame : 존재하는 행 수에 따라 열에 값을 할당합니까?

뜨겁다태그

보관