numpy 배열을 튜플로 변환
참고: 이는 일반적인 튜플에서 어레이로 변환하는 것과 반대되는 것입니다.
(랩된 c++) 함수에 인수를 중첩 튜플로 전달해야 합니다.예를 들어, 다음과 같은 작업이 있습니다.
X = MyFunction( ((2,2),(2,-2)) )
반면에 다음은 그렇지 않습니다.
X = MyFunction( numpy.array(((2,2),(2,-2))) )
X = MyFunction( [[2,2],[2,-2]] )
불행하게도, 제가 사용하고 싶은 주장은 제게 바보 같은 배열로 다가옵니다.해당 배열은 항상 일부 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를 사용하는 방법도 검토할 수 있습니다.
만약 당신이 긴 컷을 좋아한다면, 여기 튜플(a_m의 a_m에 대한 튜플(a_m.tolist())
from numpy import array
a = array([[1, 2],
[3, 4]])
tuple(tuple(a_m.tolist()) for a_m in a )
출력은 (1, 2), (3, 4)입니다.
a_m에 대한 튜플(a_m.tolist()은 생성자 표현식을 제공합니다.그레그 폰 윈켈의 대답에 대한 @norok2의 논평에서 영감을 받은 것 같습니다.
언급URL : https://stackoverflow.com/questions/10016352/convert-numpy-array-to-tuple
'source' 카테고리의 다른 글
여러 줄의 텍스트 블록과 일치하는 정규식 (0) | 2023.07.16 |
---|---|
화력 기지Cloud Firestore를 초기화하려고 할 때 firestore()가 기능하지 않습니다. (0) | 2023.07.16 |
Python: print 명령으로 줄 바꿈 방지 (0) | 2023.07.16 |
Cloud Firestore를 사용하여 컬렉션의 문서 수를 가져오는 방법 (0) | 2023.07.16 |
표의 한 열만 기준으로 중복 값 제거 (0) | 2023.07.16 |