2017-02-10 36 views
1

xy 말한다. 나는 그들이 똑같은 최고의 정확도에 있는지 확인하고 싶다. dtypes의 관계 비교 내가 원하는 뭔가를한다는 것을 보이지만 :선택 유형은 기능 <code>common_precision</code> 두 NumPy와 배열을 취

  1. 나는 실제로 그것은 내가 동의하는 경우 확실하지 않다 그 numpy.int64 < numpy.float16을 생각
  2. 비교 모르겠어요

    def common_precision(x, y): 
     if x.dtype > y.dtype: 
      y = y.astype(x.dtype) 
     else: 
      x = x.astype(y.dtype) 
     return (x, y) 

편집 : kennytm의 대답에 덕분에 내가 NumPy와의 find_common_type 내가 원하는 정확히 무엇을한다는 것을 발견했다.


    def common_precision(self, x, y):   
     dtype = np.find_common_type([x.dtype, y.dtype], []) 
     if x.dtype != dtype: x = x.astype(dtype) 
     if y.dtype != dtype: y = y.astype(dtype)  
     return x, y 

답변

0

x.dtype > y.dtype 그래서, y.dtypecan be casted tox.dtype (&& x.dtype != y.type)을 의미

>>> numpy.dtype('i8') < numpy.dtype('f2') 
False 
>>> numpy.dtype('i8') > numpy.dtype('f2') 
False 

float16과 및 INT64 단순히 양립. 다음과 같은 정보를 추출 할 수 있습니다 :

>>> numpy.dtype('f2').kind 
'f' 
>>> numpy.dtype('f2').itemsize 
2 
>>> numpy.dtype('i8').kind 
'i' 
>>> numpy.dtype('i8').itemsize 
8 

이 정보를 기반으로 비교 체계를 결정하십시오.

+0

이 완전히 내 질문에 해결되지 않았지만, 답변과 링크가 올바른 경로에 저를 얻었다. 감사! –