日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组的转置和轴对称

發(fā)布時(shí)間:2023/12/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组的转置和轴对称 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • T屬性
  • transpose()方法
  • swapaxes()方法


T屬性

import numpy as np # Numpy工具包data = np.arange(12).reshape(3, 4) # 創(chuàng)建一個(gè)3行4列的數(shù)組 print(data)# 數(shù)組的轉(zhuǎn)置和軸對稱 data1 = data.T print(data1)

print(data)

[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

print(data1)

[[ 0 4 8]
[ 1 5 9]
[ 2 6 10]
[ 3 7 11]]


transpose()方法

二維數(shù)組運(yùn)用 T屬性轉(zhuǎn)置較為簡單(x->y,y->x),但當(dāng)操作對象是高維度的數(shù)組時(shí),運(yùn)用transpose()方法可以自由的進(jìn)行轉(zhuǎn)置(x->y,y->z,z->x || x->z,y->x,z->y),運(yùn)用transpose時(shí)需要得到一個(gè)由軸編號組成的元組,才能對這些軸進(jìn)行轉(zhuǎn)置。

# transpose()方法 arr = np.arange(16).reshape((2, 2, 4)) # 每組2個(gè)元素組,總共兩組,每個(gè)元素組里有4個(gè)元素 print(arr) print(arr.shape) arr1 = arr.transpose(1, 2, 0) # 變成(2, 4, 2)三維數(shù)組,每組4個(gè)元素組,總共2組,每個(gè)元素組里有2個(gè)元素 print(arr1)

注釋名稱只是為了方便自己理解瞎寫的,三維數(shù)組還是按x,y,z理解更好理解

三維數(shù)組有三個(gè)軸,每個(gè)軸都對應(yīng)著一個(gè)編號,分別為0、1、2。
由輸出可知,arr.shape是(2,2,4),如果希望對arr進(jìn)行轉(zhuǎn)置操作,就需要對它的shape中的順序進(jìn)行調(diào)換。也就是說,當(dāng)使用transpose()方法對數(shù)組的shape進(jìn)行變換時(shí),需要以元組的形式傳入shape的編號,比如本例中的(1,2,0)。

ps:若傳入(0,1,2),則數(shù)組的shape不會(huì)發(fā)生任何變化

print(arr)

[[[ 0 1 2 3]
[ 4 5 6 7]]

[[ 8 9 10 11]
[12 13 14 15]]]

為了便于理解貼張圖好了

print(arr.shape)

(2,2,4)

print(arr1)

[[[ 0 8]
[ 1 9]
[ 2 10]
[ 3 11]]

[[ 4 12]
[ 5 13]
[ 6 14]
[ 7 15]]]

本例中,由(0,1,2)變?yōu)?1,2,0)其實(shí)也就是我們說的(x->y,y->z,z->x),什么意思呢?
簡單來講,如果拿第一個(gè)元素0來看,不方便解釋——以前x0,y0,z0的值等于0,現(xiàn)在x0,y0,z0的值等于0那我們看第二個(gè)元素的話,shape為(0,1,2)時(shí),x0,y0,z1的值為1,當(dāng)shape為(1,2,0)時(shí),x0,y0,z1的值由于(x->y,y->z,z->x)【->前是(0,1,2)中的坐標(biāo),->后是(1,2,0)中的坐標(biāo)】這樣的變換,也就是(1,2,0)的x0是(0,1,2)的y0,(1,2,0)的y0是(0,1,2)的z0,(1,2,0)的z1是(0,1,2)的x1,即——8。以此類推。

如果我們不輸入任何參數(shù),直接調(diào)用transpose()方法,則其執(zhí)行的效果等價(jià)于transpose(2,1,0)將數(shù)組進(jìn)行轉(zhuǎn)置。


swapaxes()方法

在某些情況下,我們可能只需要轉(zhuǎn)換其中的兩個(gè)軸,這時(shí)我們可以使用此方法,該方法需要接收一對軸編號。

# swapaxes()方法 arr2 = arr.swapaxes(1, 0) # 等價(jià)于transpose(1, 0, 2) print(arr2)

print(arr2)

[[[ 0 1 2 3]
[ 8 9 10 11]]

[[ 4 5 6 7]
[12 13 14 15]]]

總結(jié)

以上是生活随笔為你收集整理的数组的转置和轴对称的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。