170617 numpy資料溢位的對策
阿新 • • 發佈:2019-02-03
大學上C語言的時候理論上碰到過資料溢位的問題,今天在處理實驗資料中真的碰到了這個問題:
- 對於資料過大的數值相乘時可能資料上溢問題,此時,可更改資料型別,增大資料範圍。
- 對於資料過小的數值相乘時可能資料下溢問題,此時,可定義資料截斷,小於某個值的資料將其置為0或某一個較小的值等操作。
下面是一個具體點的例子:
程式碼:
# -*- coding: utf-8 -*-
"""
Created on Tue May 16 16:32:06 2017
@author: Bruce Lau
"""
import numpy as np
#%% Test ok
k=73
M_1= np.arange(k*k).reshape((k,k))
Xtr_1 = np.sum(M_1**2,axis=1)
S1 = np.sqrt(Xtr_1)
#%% Test ok
k=73
M_2= np.arange(k*k,dtype='float32').reshape((k,k))
Xtr_2 = np.sum(M_2**2,axis=1)
S2 = np.sqrt(Xtr_2)
#%% Test Wrong
k=74
M_3= np.arange(k*k).reshape((k,k))
Xtr_3 = np.sum(M_3**2,axis=1)
S3 = np.sqrt(Xtr_3)
#%% Test ok
k=74
M_4= np.arange(k*k,dtype='float32').reshape((k,k))
Xtr_4 = np.sum(M_4**2,axis=1)
S4 = np.sqrt(Xtr_4)