[편집]float32 numpy 배열을 사용하여 mean과 std를 계산하려고합니다. float64가 반환되었습니다.
제 테스트 사례가 제대로 검토되지 않았습니다. 나는 1-D 어레이에서만 테스트했다. 어떤 경우에는 64 비트 스칼라가 반환됩니다. 3D 배열로 만들면 예상대로 32 비트를 얻습니다.
엄청난 수의 배열 (600 * 600 * 4044)의 평균 및 표준 편차를 계산하려고하며 메모리 한계 (64 비트 시스템의 경우 16GB)에 가깝습니다. 그래서 나는 기본값 인 float64보다는 모든 것을 float32로 처리하려고합니다. 그러나 dtype을 float32로 지정해도 데이터에 대한 작업을 시도 할 때마다 float64가 반환됩니다. 왜 이런 일이 일어 났습니까? 그래, 나중에 변환 할 수 있지만 내가 말한 것처럼 나는 내 RAM의 한계에 가깝다. 나는 처리 단계에서도 가능한 한 모든 것을 작게 유지하려고 노력하고있다. 아래는 내가 얻는 예입니다.
import scipy
a = scipy.ones((600,600,4044), dtype=scipy.float32)
print(a.dtype)
a_mean = scipy.mean(a, 2, dtype=scipy.float32)
a_std = scipy.std(a, 2, dtype=scipy.float32)
print(a_mean.dtype)
print(a_std.dtype)
반환
float32
float32
float32
이 너무 쉽게 그냥 64 비트 파이썬 –
이유로 전환 할 수 있을까요? 그게 어떻게 도움이 될지 모르겠다. – Caustic
그러면 32 비트 주소 공간으로 제한되지 않을 것입니다. 그것이 실제 RAM이 아니라 실제 한계라고 기대되는 것입니다. –