2012-11-21 2 views
0

Python을 사용하여 R을 사용하여 생성 된 대용량 CSV 파일 (200MB)을 압축 해제합니다 (저는 Python을 사용합니다).Numpy 저장 파일이 원본보다 큼

파일 정리 (정규화, 크기 조정, 정크 열 제거 등)를 한 다음 데이터 분리 문자가있는 numpy의 savetxt를 ','로 사용하여 CSV 속성을 다시 저장합니다.

새로운 파일은 원본 파일 (거의 400MB)의 거의 두 배입니다. 원래 데이터와 새 데이터는 수레 배열입니다.

도움이된다면 새로운 파일에 원래 값이없는 지수 값이 필요한 매우 작은 값이있는 것처럼 보입니다.

왜 이런 일이 발생하는지 알고 싶습니다.

답변

2

전후에 텍스트에 수레가 표시되는 방식을 보았습니까? "1., 2., 3."줄이있을 수 있습니다. "1.000000e + 0, 2.000000e + 0,3.000000e + 0"또는 그와 비슷한 것으로,이 둘은 모두 유효하며 둘은 같은 숫자를 나타냅니다.

그러나 원래 파일에 정규화 및 크기 조정을 수행 한 후에 상대적으로 소수 자리 수가 적은 값 (예 : "1.1, 2.2, 3.3")이 포함되어있는 경우 더 많은 숫자를 "만들"수 있습니다. 수학의 결과를 나타 내기 위해 필요하지만 정밀도의 실제 증가에 해당하지 않습니다. 예를 들어 마지막 예제에서 값 합계를 1.0으로 정규화하면 "0.1666666, 0.3333333, 0.5"가 나타납니다.

간단히 대답하면 특정 저장 공간을 차지할 수있는 텍스트로 표현 된 부동 소수점 또는 부동 소수점 당 최대 가능 수보다 적은 수의 부동 소수점 수는 없다는 것입니다. 데이터가 동일하게 유지되는 경우에도 데이터가 많이 달라질 수 있으며 데이터가 변경되면 분명히 달라질 것입니다.

관련 문제