본문 바로가기
파이썬

파이썬 dtype ( 'O')에서 dtype ( 'float64')으로 배열 데이터를 캐스트 할 수 없습니다.

by º기록 2020. 10. 30.
반응형

일부 데이터에 함수를 맞추기 위해 scipy의 curve_fit을 사용하고 있으며 다음과 같은 오류가 발생합니다.

Cannot cast array data from dtype('O') to dtype('float64') according to the rule 'safe'

이것은 내 코드에서이 줄을 가리 킵니다.

popt_r, pcov = curve_fit(
                    self.rightFunc, np.array(wavelength)[beg:end][edgeIndex+30:], 
                    np.dstack(transmitted[:,:,c][edgeIndex+30:])[0][0],
                    p0=[self.m_right, self.a_right])

rightFunc는 다음과 같이 정의됩니다.

def rightFunc(self, x, m, const):

    return np.exp(-(m*x + const))

내가 이해하는 바와 같이 'O'유형은 파이썬 객체를 참조하지만이 오류의 원인을 볼 수 없습니다.

완전한 오류 :


이 문제를 해결하기 위해 조사해야 할 아이디어가 있습니까?

 

해결 방법

 

일반적으로 이러한 scipy 함수에는 다음과 같은 매개 변수가 필요합니다.

curvefit( function, initial_values, (aux_values,), ...)

여기서 aux_values ​​의 튜플은 기본 변수의 현재 값과 함께 함수 로 전달됩니다.

dstack 표현식이 aux_values ​​입니까? 또는 여러 연결. 튜플 로 래핑해야 할 수도 있습니다.

(np.dstack(transmitted[:,:,c][edgeIndex+30:])[0][0],)

코드의 어느 줄에서 오류가 발생하는지뿐만 아니라이 오류가 발생하는 위치를 정확히 알아야 할 수도 있습니다. 어떤 가치가 변환되고 있는지 알아야합니다. dtype 객체가있는 배열은 어디에 있습니까?

 

참조 페이지 https://stackoverflow.com/questions/39452792

 

 

반응형

댓글