2017-10-15 3 views
1

저는 python3.6에서 arributeerror를 어떻게 해결할 것인지 궁금합니다. 'list'객체에 'astype'속성이 없습니다. 관련 코드가 손상되었습니다.AttributeError : 'list'객체를 해결하는 방법은 'astype'속성이 없습니까?

def _init_mean_std(self, data): 
    data = data.astype('float32') 
    self.mean, self.std = np.mean(data), np.std(data) 
    self.save_meanstd() 
    return data 

저에게 조언 할 수있는 사람이 있습니까? 감사합니다.

+3

'데이터'를 'astype'속성을 가진 것으로 변환합니다. 말하자면 – Kanak

+0

자발적으로할지 모르겠지만, 기본적으로'np.array (data)'는 실제로''np.array (data) float64'. 'print (data.dtype)'를 실행하여 확인하십시오. – Kanak

답변

1

근본적인 문제는 다른 데이터 유형 인 Python 목록과 NumPy 배열의 혼동입니다. np.foo(array)으로 호출되는 NumPy 메서드는 일반적으로 파이썬 목록을 제공하면 불평하지 않고 NumPy 배열로 자동 변환합니다. 그러나 객체에 포함 된 메소드를 호출하려고하면 array.foo()처럼 물론 적절한 유형이 있어야합니다.

내가

data = np.array(data, dtype=np.float32) 

사용하는 것이 좋습니다 것입니다 그래서 배열의 유형이 한 번에 NumPy와로 알려져있다. 이렇게하면 처음에 배열을 만든 다음 다른 배열로 캐스팅하는 불필요한 작업을 피할 수 있습니다.

NumPy는 "float32"와 같은 문자열 대신 dtype objects을 사용할 것을 권장합니다.

관련 문제