복붙노트

[PYTHON] Numpy 배열에 대한 인덱스로 튜플 / 배열 / 목록 풀기

PYTHON

Numpy 배열에 대한 인덱스로 튜플 / 배열 / 목록 풀기

나는 할 수 있기를 좋아할 것이다.

>>> A = numpy.array(((1,2),(3,4)))
>>> idx = (0,0)
>>> A[*idx]

그리고 얻다

1

그러나 이것은 유효한 구문이 아닙니다. 명시 적으로 작성하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

>>> A[idx[0], idx[1]]

?

편집 : 답장을 보내 주셔서 감사합니다. 내 프로그램에서 튜플이 아닌 넛피 배열로 인덱싱하고 이상한 결과를 얻었습니다. Alok가 제안하는 튜플로 변환하는 것은 트릭을 수행한다.

해결법

  1. ==============================

    1.생각보다 쉽습니다.

    생각보다 쉽습니다.

    >>> import numpy
    >>> A = numpy.array(((1,2),(3,4)))
    >>> idx = (0,0)
    >>> A[idx]
    1
    
  2. ==============================

    2.시험

    시험

    A[tuple(idx)]
    

    이 예제처럼 단순하지 않은보다 복잡한 사용 사례가 없다면, 위의 코드는 모든 배열에서 작동해야합니다.

  3. ==============================

    3.언 패킹은 필요 없습니다. [및] 사이에 쉼표가 있으면 인수를 전달하지 않고 튜플을 만들고 있습니다. foo [bar, baz]는 foo [(bar, baz)]와 동일합니다. 따라서 tuple t = bar, baz가 있다면 foo [t]라고 간단하게 말할 것입니다.

    언 패킹은 필요 없습니다. [및] 사이에 쉼표가 있으면 인수를 전달하지 않고 튜플을 만들고 있습니다. foo [bar, baz]는 foo [(bar, baz)]와 동일합니다. 따라서 tuple t = bar, baz가 있다면 foo [t]라고 간단하게 말할 것입니다.

  4. ==============================

    4.객체에 대한 색인 생성은 다음을 호출합니다.

    객체에 대한 색인 생성은 다음을 호출합니다.

    object.__getitem__(index)
    

    A [1, 2]를 할 때, 그것은 다음과 같습니다 :

    A.__getitem__((1, 2))
    

    그래서 당신이 할 때 :

    b = (1, 2)
    
    A[1, 2] == A[b]
    A[1, 2] == A[(1, 2)]
    

    두 문장 모두 True로 평가됩니다.

    목록으로 색인을 생성하면 [1, 2]! = (1, 2)와 같이 색인이 생성되지 않을 수 있습니다.

  5. from https://stackoverflow.com/questions/2444923/unpacking-tuples-arrays-lists-as-indices-for-numpy-arrays by cc-by-sa and MIT license