IT

numpy 배열을 튜플로 변환

lottoking 2020. 8. 30. 09:03
반응형

numpy 배열을 튜플로 변환


참고 : 이것은 튜플-배열 변환의 반대를 요구합니다.

(래핑 된 C ++) 함수에 중첩 된 튜플로 인수를 전달해야합니다. 예를 들어, 다음 작품

X = MyFunction( ((2,2),(2,-2)) )

다음

X = MyFunction( numpy.array(((2,2),(2,-2))) )
X = MyFunction( [[2,2],[2,-2]] )

불행히도 내가 사용하고 싶은 인수는 나에게 numpy 배열로 온다. 이 배열은 항상 일부 N에 2xN 차원을 의미하는 것이 상당히 클 수 있습니다.

그것을 튜플으로 변환하는 쉬운 방법이 있습니까? 나는 새 튜플을 생성하여 루프를 돌릴 수 있다고 생각합니다. numpy 배열이 제공하는 멋진 액세스가 좋습니다.

내가 바라는 것만 큼 멋지게 할 수있는 가장 예쁜 방법은 무엇입니까?


>>> arr = numpy.array(((2,2),(2,-2)))
>>> tuple(map(tuple, arr))
((2, 2), (2, -2))

다음은이를 수행 할 함수입니다.

def totuple(a):
    try:
        return tuple(totuple(i) for i in a)
    except TypeError:
        return a

그리고 예 :

>>> array = numpy.array(((2,2),(2,-2)))
>>> totuple(array)
((2, 2), (2, -2))

나는 만족스럽지 마침내 마침내 사용했습니다.

>>> a=numpy.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
       [4, 5, 6]])

>>> tuple(a.reshape(1, -1)[0])
(1, 2, 3, 4, 5, 6)

더 빠른지 모르겠지만 더 빠른지입니다.)


다른 옵션

tuple([tuple(row) for row in myarray])

NumPy 배열을 C ++ 함수에 전달하는 경우 Cython 또는 SWIG 사용을 볼 수도 있습니다.

참고 URL : https://stackoverflow.com/questions/10016352/convert-numpy-array-to-tuple

반응형