對於python陣列來說,可以有三種格式:
numpy包裡的array格式,例如,建立乙個三行而列的陣列:a = np.array([[1,2],[3,4],[5,6]])
。
matrix格式,例如:b = np.matrix([[1,2],[3,4],[5,6]])
。
利用list組成的陣列,例如:c = [[1,2],[3,4],[5,6]]
。
可以看到,array
和matrix
格式都是numpy包封裝的,那麼它倆有什麼區別呢?其實從字面意思就可以看出來,array
嘗試實現我們數學課本中的陣列,而matrix
嘗試實現我們數學課本中的矩陣,陣列和矩陣的區別就是這兩個資料結構的區別。即:matrix
格式的運算完全滿足矩陣運算規則,比如,上邊建立的b矩陣,我們運算:b*b
就會報錯,原因是行列數不滿足矩陣乘法的規則。
一般情況下,我們使用array格式就夠了。
做了乙個稍長的鋪墊之後接下來進入正題,對於array格式的陣列來說,numpy提供了乙個方便的函式:np.trunc(arr)
來執行取整操作。
看下邊乙個小例子:
a = np.array([[
1.2,
2.2,
3.2,
4.2],[
5.2,
6.2,
7.2,
8.2]])
b = np.trunc(a)
print
(b)
輸出結果:
[[1. 2. 3. 4.]可以看到,雖然已經將對應的元素取整,但是元素本身的格式依舊不是整數,如果需要保證元素本身就是int資料型別,那麼需要新增這條語句:[5. 6. 7. 8.]]
c = b.astype(int)
輸出c,可以看到元素已經變成了int
型別。
如果原始資料是list,處理之後還需要得到list資料,那麼只需要加一條轉換語句即可:d = c.tolist()
看起來如果以後想將陣列裡的元素取整,只需要轉換成array格式,呼叫np.trunc(arr)
,就可以解決一切問題了,沒有別的函式什麼事情了。其實不然,上帝給你開啟了一扇窗,總會再給你挖乙個坑。這種方法雖然簡單易行,但是轉換後的每個元素的格式是int32
格式的,這個int32
型別是經過numpy包二次封裝的,在大多數情況下,和python基本的int資料型別沒有什麼區別,但是,當我們想把這個陣列裡的元素存放在json檔案中,就會報這樣的錯誤:99 is not json serializable
。這是因為json是沒有辦法識別numpy包封裝過的資料的。
好訊息是,array轉換成list的函式:a.tolist()
函式貼心地提供了把陣列裡每個元素轉換成基本資料型別的服務,只需要利用該函式轉換之後,就可以放心地在json檔案中儲存啦。
python取整方法
用 math 模組中的 ceil 方法 import math math.ceil 3.25 4.0 math.ceil 3.75 4.0 math.ceil 4.85 5.0直接用內建的 int 函式即可 a 3.75 int a 3floor import math math.floor x 對...
python取整函式
1.int 向下取整 內建函式 1 n 3.75 2 print int n 3 3 n 3.25 4 print int n 3 2.round 四捨五入 內建函式 1 n 3.75 2 print round n 4 3 n 3.25 4 print round n floor 向下取整 mat...
python 取整函式
向下取整的運算稱為floor,用數學符號 表示 向上取整的運算稱為ceiling,用數學符號 表示。例如 59 60 0 59 60 1 59 60 1 59 60 0 向上向下 取整函式數隻會對小數點後面的 數字不為零 的數進行操作,要是給它乙個整數 它就返回整數本身 對小數不為零的數操作 給定 ...