亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解

 更新時(shí)間:2023年08月22日 14:19:50   作者:夏普通  
這篇文章主要介紹了Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解,zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象,這樣做的好處是節(jié)約了不少的內(nèi)存,需要的朋友可以參考下

Python實(shí)現(xiàn)矩陣轉(zhuǎn)置

轉(zhuǎn)置矩陣意味著我們將其列變?yōu)樾小W屛覀兺ㄟ^(guò)一個(gè)例子來(lái)理解它,如果轉(zhuǎn)置后看起來(lái)像什么。

假設(shè)您有原始矩陣,例如-x = [[1,2][3,4][5,6]]

在上面的矩陣“ x”中,我們有兩列,分別為1、3、5和2、4、6。

因此,當(dāng)我們?cè)诰仃?ldquo; x”上方轉(zhuǎn)置時(shí),列變?yōu)樾?。因此,上面矩陣的轉(zhuǎn)置版本看起來(lái)像-x1 = [[1, 3, 5][2, 4, 6]]

因此,我們有另一個(gè)矩陣“ x1”,在不同的位置以不同的值組織不同。

方法一、使用numpy轉(zhuǎn)置

import numpy as np
A = np.mat([[1,2,3],[4,5,6],[7,8,9]])
print(A.T)
print(A.swapaxes(0, 1))

 # 均輸出
# [[1 4 7]
#  [2 5 8]
#  [3 6 9]]

import numpy as np
A = [[1,2,3],[4,5,6],[7,8,9]]
print(np.transpose(A))

# 輸出
# [[1 4 7]
#  [2 5 8]
#  [3 6 9]]

方法二、使用zip()函數(shù)

  • zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象,這樣做的好處是節(jié)約了不少的內(nèi)存。
  • 可以使用 list() 轉(zhuǎn)換來(lái)輸出列表?!緕ip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中為了減少內(nèi)存,zip() 返回的是一個(gè)對(duì)象。如需展示列表,需手動(dòng) list() 轉(zhuǎn)換?!?/li>
  • 如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長(zhǎng)度與最短的對(duì)象相同,利用 * 號(hào)操作符,可以將元組解壓為列表。

zip(A) 相當(dāng)于打包,打包為元組的列表

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> A = zip(a,b)     # 打包為元組的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素個(gè)數(shù)與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*A)          # 與 zip 相反,*A 可理解為解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]
A = [[1,2,3],[4,5,6],[7,8,9]]
print(*A) #[1, 2, 3] [4, 5, 6] [7, 8, 9]
#zip()返回的是一個(gè)對(duì)象。如需展示列表,需手動(dòng) list() 轉(zhuǎn)換。
#print(zip(*A)) #<zip object at 0x000001CD7733A2C8>
print(list(zip(*A)))

# 輸出
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

這里python中星號(hào)(*)的作用是將變量中可迭代對(duì)象的元素拆解出來(lái)。

方法三、使用python列表表達(dá)式

不占用額外空間,“原地修改”

A = [[1,2,3],[4,5,6],[7,8,9]]
#print(len(A)) #矩陣行數(shù)
#print(len(A[0])) #矩陣列數(shù)
B = [[A[j][i] for j in range(len(A))] for i in range(len(A[0]))]
print(B)

 # 輸出
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

B = [[A[j][i] for j in range(len(A))] for i in range(len(A[0]))]

這句寫的清楚一點(diǎn)就是:

A = [[1,2,3],[4,5,6],[7,8,9]]
#print(len(A)) #矩陣行數(shù)
#print(len(A[0])) #矩陣列數(shù)
for i in range(len(A[0])):#len(A[0])矩陣列數(shù)
    for j in range(i,len(A)):#len(A)矩陣行數(shù)
        #轉(zhuǎn)置就是A[i][j]和A[j][i]互換
        A[j][i], A[i][j] = A[i][j], A[j][i]
print(A)

# 輸出
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

因?yàn)檗D(zhuǎn)置矩陣的對(duì)稱性, for j in range(i,len(A)) 限制了只遍歷矩陣上三角,必須要限制,如果不限制會(huì)導(dǎo)致重復(fù)交換。

方法四、新建列表B,使用雙重循環(huán)添加元素

A = [[1,2,3],[4,5,6],[7,8,9]]
B=[]
for i in range(len(A[0])):#len(A[0])矩陣列數(shù)
    temp = []
    for j in range(len(A)):#len(A)矩陣行數(shù)
        temp.append(A[j][i])
    B.append(temp)
print(B)

# 輸出
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

到此這篇關(guān)于Python實(shí)現(xiàn)矩陣轉(zhuǎn)置的幾種方法詳解的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)矩陣轉(zhuǎn)置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python基礎(chǔ)之變量的相關(guān)知識(shí)總結(jié)

    Python基礎(chǔ)之變量的相關(guān)知識(shí)總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python變量展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 詳解Python中的路徑問(wèn)題

    詳解Python中的路徑問(wèn)題

    這篇文章主要介紹了Python中的路徑問(wèn)題,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • Python操作Excel之xlsx文件

    Python操作Excel之xlsx文件

    前段時(shí)間做一個(gè)項(xiàng)目,不得不使用Python直接生成Excel文件,后來(lái)隨著需求的變化,還要對(duì)已有的Excel文件進(jìn)行讀取。所以想著記錄下來(lái),這篇文章主要給大家介紹了Python操作Excel之xlsx文件的相關(guān)資料,需要的朋友可以參考下。
    2017-03-03
  • Python多線程實(shí)例教程

    Python多線程實(shí)例教程

    這篇文章主要介紹了Python多線程,對(duì)比了新舊版本的Python在實(shí)現(xiàn)多線程的特點(diǎn),并采用threading模塊的實(shí)例來(lái)講述了多線程的技巧,需要的朋友可以參考下
    2014-09-09
  • Python利用zhconv模塊進(jìn)行簡(jiǎn)繁體字轉(zhuǎn)換的案例演示

    Python利用zhconv模塊進(jìn)行簡(jiǎn)繁體字轉(zhuǎn)換的案例演示

    zhconv是一個(gè)Python庫(kù),提供了簡(jiǎn)體字和繁體字之間的轉(zhuǎn)換功能,本教程將向你展示如何使用zhconv模塊來(lái)實(shí)現(xiàn)簡(jiǎn)繁體字的互轉(zhuǎn),并附帶一個(gè)案例演示,感興趣的朋友可以參考一下
    2024-05-05
  • 點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)

    點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)

    這篇文章主要介紹了點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)“布料”濾波算法介紹,本文從基本思想到實(shí)現(xiàn)思路一步步給大家講解的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • Playwright中如何保持登錄狀態(tài)

    Playwright中如何保持登錄狀態(tài)

    本文主要介紹了Playwright中如何保持登錄狀態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Python利用glob庫(kù)實(shí)現(xiàn)輕松應(yīng)對(duì)文件和目錄管理

    Python利用glob庫(kù)實(shí)現(xiàn)輕松應(yīng)對(duì)文件和目錄管理

    Python提供了glob庫(kù),它允許我們根據(jù)特定模式匹配文件和目錄,本文將詳細(xì)介紹glob庫(kù)的用法,并通過(guò)實(shí)例演示它的各種功能,需要的可以了解一下
    2023-07-07
  • 利用python、tensorflow、opencv、pyqt5實(shí)現(xiàn)人臉實(shí)時(shí)簽到系統(tǒng)

    利用python、tensorflow、opencv、pyqt5實(shí)現(xiàn)人臉實(shí)時(shí)簽到系統(tǒng)

    這篇文章主要介紹了利用python、tensorflow、opencv、pyqt5實(shí)現(xiàn)人臉實(shí)時(shí)簽到系統(tǒng),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python?面向切面編程?AOP?及裝飾器

    Python?面向切面編程?AOP?及裝飾器

    這篇文章主要介紹了Python?面向切面編程?AOP?及裝飾器,AOP,就是面向切面編程,簡(jiǎn)單的說(shuō),就是動(dòng)態(tài)地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程,更多相關(guān)資需要的小伙伴可以參考下面文章內(nèi)容
    2022-05-05

最新評(píng)論