來自 《Python數(shù)據(jù)分析基礎(chǔ)教程:Numpy 學(xué)習(xí)指南(第2版)》
Numpy改變數(shù)組維度的方法有:
reshape()ravel()flatten()
用元組設(shè)置維度
transpose()resize()
下面將依次進行說明
0. 首先,創(chuàng)建一個多維數(shù)組
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 函數(shù)
b = a.reshape(2,3,4)print(b)
得到一個 2*3*4 維的數(shù)組:
[[[ 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函數(shù) 可以將多維數(shù)組展平(也就是變回一維)
c = b.ravel()print(c)
得到一維數(shù)組
[ 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函數(shù) 也是將多維數(shù)組展平,與ravel函數(shù)的功能相同,不過flatten函數(shù)會請求分配內(nèi)存來保存結(jié)果,而ravel函數(shù)只是返回數(shù)組的一個視圖(view)
c = b.flatten()print(c)
得到一維數(shù)組
[ 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.用元組設(shè)置維度
直接用一個正整數(shù)元組來設(shè)置數(shù)組的維度
b.shape = (6,4)print(b)
這種做法將直接改變所操作的數(shù)組,現(xiàn)在數(shù)組b變成了一個 6*4 的多維數(shù)組
[[ 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函數(shù) 將矩陣進行轉(zhuǎn)置
d = b.transpose()print(d)
得到 4*6 的多維數(shù)組
[[ 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函數(shù) 和reshape函數(shù)的功能一樣,但resize會直接修改所操作的數(shù)組
b.resize((2,12))print(b)
得到 2*12 的兩維數(shù)組
[[ 0 1 2 3 4 5 6 7 8 9 10 11] [12 13 14 15 16 17 18 19 20 21 22 23]]
并且這一步不可以通過賦值來實現(xiàn),如下所示:
e = b.resize((2,12))print(e)
此時結(jié)果為:
None
以上這篇Numpy 改變數(shù)組維度的幾種方法小結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點
疑難解答
圖片精選