arr=np.arange(32).reshape(8,4)
reshape轉型結果:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23],
[24, 25, 26, 27],
[28, 29, 30, 31]])
arr.t
t轉置結果:
array([[ 0, 4, 8, 12, 16, 20, 24, 28],
[ 1, 5, 9, 13, 17, 21, 25, 29],
[ 2, 6, 10, 14, 18, 22, 26, 30],
[ 3, 7, 11, 15, 19, 23, 27, 31]])
arr=arr.reshape(2,4,4)
arr
二維陣列轉成三維結果:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]],
[[16, 17, 18, 19],
[20, 21, 22, 23],
[24, 25, 26, 27],
[28, 29, 30, 31]]])
arr.transpose((2,0,1))
transpose方法結果:
array([[[ 0, 4, 8, 12],
[16, 20, 24, 28]],
[[ 1, 5, 9, 13],
[17, 21, 25, 29]],
[[ 2, 6, 10, 14],
[18, 22, 26, 30]],
[[ 3, 7, 11, 15],
[19, 23, 27, 31]]])
分析:
轉置t,就是行列交換位置,以對角線為軸旋轉180度。
這裡主要是分析一下transpose,
這裡我們就拿三維矩陣做例子,
可以看到transpose(),有三個引數,則三個引數可以代表(x,y,z),我把它理解成索引更為方便,即預設轉換前三維矩陣索引(0,1,2),而transpose()裡的引數就是轉變後的索引,拿上面轉換前數字3舉例:
變化原理
轉換前3(0,0,3)------->transpose(2,0,1)根據這個原理其他也可以自己分析分析,這就是transpose函式的用法。轉化中,預設索引(0,1,2)------>(2,0,1)
2–>0的位置
0—1的位置
1----2的位置
根據這個變化每個元素對應的位置移動,構成新的索引
轉換後3的索引就跟這變化為------>3(3,0,0)
arr.swapaxes(0,2)
swapaxes得到的結果。
array([[[ 0, 16],
[ 4, 20],
[ 8, 24],
[12, 28]],
[[ 1, 17],
[ 5, 21],
[ 9, 25],
[13, 29]],
[[ 2, 18],
[ 6, 22],
[10, 26],
[14, 30]],
[[ 3, 19],
[ 7, 23],
[11, 27],
[15, 31]]])
理解了transpose,再來理解swapaxes就好理解了,上述的舉例子,原先數字1的座標為(0,0,1)經過arr.swapaxes(0,2)相當於把1的座標變為(1,0,0)也就是一維座標與三維座標換位置。這裡arr.swapaxes(2,0)結果一樣,都是一維與三維換位置而已。對應換的座標的數字找到對應的位置移動構成新的陣列。 Numpy 03 轉置和軸對換
github部落格傳送門 傳送門numpy 01 建立 指定資料型別 檢視維度和資料型別 簡單的數 算 numpy 02 索引和切片 numpy 03 轉置和軸對換 numpy 04 通用函式 numpy 05 資料處理 numpy 06 陣列的檔案輸入輸出 線性代數 arr np.arange 1...
Numpy陣列轉置
numpy陣列轉置很容易,兩種種寫法 np array np.array 1,2 3,4 np array.transpose np.transpose np array 但是一維陣列轉置的時候有個坑,光transpose沒有用,需要指定shape引數 array 1d np.array 1,2 p...
Python numpy陣列轉置
import numpy as np 轉置是重塑的一種特殊形式,它返回的是源資料的檢視 不會進行任何複製操作 轉置方法有.t transpose 和.swapaxes transpose 與t和swapaxes 的關係 在transpose 的基礎上分化出t 和swapaxes ps transpo...