您好,登錄后才能下訂單哦!
來自 《Python數據分析基礎教程:Numpy 學習指南(第2版)》
Numpy改變數組維度的方法有:
reshape() ravel() flatten()
用元組設置維度
transpose() resize()
下面將依次進行說明
0. 首先,創建一個多維數組
from numpy import * a = arange(24)
得到:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
1.reshape 函數
b = a.reshape(2,3,4) print(b)
得到一個 2*3*4 維的數組:
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]
可以想象成2層小洋樓,每層有 3*4 個房間
2.ravel函數 可以將多維數組展平(也就是變回一維)
c = b.ravel() print(c)
得到一維數組
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
3.flatten函數 也是將多維數組展平,與ravel函數的功能相同,不過flatten函數會請求分配內存來保存結果,而ravel函數只是返回數組的一個視圖(view)
c = b.flatten() print(c)
得到一維數組
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
4.用元組設置維度
直接用一個正整數元組來設置數組的維度
b.shape = (6,4) print(b)
這種做法將直接改變所操作的數組,現在數組b變成了一個 6*4 的多維數組
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19] [20 21 22 23]]
5.transpose函數 將矩陣進行轉置
d = b.transpose() print(d)
得到 4*6 的多維數組
[[ 0 4 8 12 16 20] [ 1 5 9 13 17 21] [ 2 6 10 14 18 22] [ 3 7 11 15 19 23]]
6.resize函數 和reshape函數的功能一樣,但resize會直接修改所操作的數組
b.resize((2,12)) print(b)
得到 2*12 的兩維數組
[[ 0 1 2 3 4 5 6 7 8 9 10 11] [12 13 14 15 16 17 18 19 20 21 22 23]]
并且這一步不可以通過賦值來實現,如下所示:
e = b.resize((2,12)) print(e)
此時結果為:
None
以上這篇Numpy 改變數組維度的幾種方法小結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。