1. 程式人生 > >170617 numpy資料溢位的對策

170617 numpy資料溢位的對策

大學上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)