숫자가 어떤 종류의 int인지(core 또는 numpy, signed 여부) 어떻게 판단합니까?
변수가 유형인지 여부를 테스트해야 합니다.int
, 또는 그 중의np.int*
,np.uint*
, 가급적 단일 조건(즉, 없음)을 사용합니다.or
).
몇 가지 테스트를 해본 결과 다음과 같이 생각이 듭니다.
isinstance(n, int)
일치할 뿐입니다int
그리고.np.int32
(또는np.int64
플레이트 폼에 따라),np.issubdtype(type(n), int)
모든 것이 일치하는 것 같습니다.int
그리고.np.int*
, 일치하지 않습니다.np.uint*
.
이를 통해 두 가지 질문으로 이어집니다. 의지np.issubdtype
어떤 종류의 서명된 int와 일치합니까?숫자가 서명된 것인지 서명되지 않은 것인지를 한 번의 검사로 확인할 수 있습니까?
이것은 정수에 대한 테스트에 관한 것입니다. 테스트가 반환되어야 합니다.False
부표 운반용으로
NumPy는 Python 형식이 아닌 하위 형식 검사에 사용할 수 있는 기본 클래스를 제공합니다.
사용하다np.integer
서명된 정수 또는 서명되지 않은 정수의 인스턴스를 확인합니다.
사용하다np.signedinteger
그리고.np.unsignedinteger
서명된 유형 또는 서명되지 않은 유형을 확인합니다.
>>> np.issubdtype(np.uint32, np.integer)
True
>>> np.issubdtype(np.uint32, np.signedinteger)
False
>>> np.issubdtype(int, np.integer)
True
>>> np.issubdtype(np.array([1, 2, 3]).dtype, np.integer)
True
모든 부동 또는 복소수 유형이 반환됩니다.False
시험해 보면
np.issubdtype(np.uint*, int)
항상 그럴 것입니다False
왜냐하면 파이썬은int
는 서명된 유형입니다.
이 모든 기본 클래스 간의 관계를 보여주는 유용한 참고 자료는 여기 설명서에서 찾을 수 있습니다.
python에게 tuple 타입을 전달하는 것을 제안합니다.isinstance()
내장 기능그리고 당신의 질문과 관련해서는np.issubtype()
서명된 int와 일치하지 않습니다. 클래스가 두 번째 클래스의 하위 클래스인지 여부를 결정합니다.그리고 모든 정수형(int8, int32 등)은 다음과 같은 하위 클래스입니다.int
다음 유형 중 하나를 전달하면 True가 반환됩니다.int
.
다음은 예입니다.
>>> a = np.array([100])
>>>
>>> np.issubdtype(type(a[0]), int)
True
>>> isinstance(a[0], (int, np.uint))
True
>>> b = np.array([100], dtype=uint64)
>>>
>>> isinstance(b[0], (int, np.uint))
True
또한 보다 일반적인 접근 방식(일부 특정 유형만 일치시키려는 경우에는 적합하지 않음)으로 사용할 수 있습니다.np.isreal()
:
>>> np.isreal(a[0])
True
>>> np.isreal(b[0])
True
>>> np.isreal(2.4) # This might not be the result you want
True
>>> np.isreal(2.4j)
False
나무 유형에 대한 멋진 @알렉스 라일리의 답변을 바탕으로 저는 제 값을 이 fn에 매핑하여 같은 문제를 해결할 수 있었습니다.누군가에게 유용하기를 바랍니다.
def convert_to_native_type(value):
if isinstance(value, np.integer):
return int(value)
elif isinstance(value, np.float):
return float(value)
else:
return value
언급URL : https://stackoverflow.com/questions/37726830/how-to-determine-if-a-number-is-any-type-of-int-core-or-numpy-signed-or-not
'IT' 카테고리의 다른 글
속성을 비공개로 하고 읽기 전용 속성을 만들어야 하는 시기는 언제입니까? (0) | 2023.09.10 |
---|---|
sass --자동 미니와 함께 보기? (0) | 2023.09.10 |
스위치 문에서 "defau4t"가 합법적인 이유는 무엇입니까? (0) | 2023.09.10 |
인덱스의 데이터 프레임과 팬더의 데이터 (0) | 2023.09.10 |
AWS ECR에 대한 도커 푸시가 즉시 중단되고 시간 초과됨 (0) | 2023.09.05 |