欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Python實現(xiàn)矩陣轉置

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

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

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

因此,當我們在矩陣“ x”上方轉置時,列變?yōu)樾小R虼?,上面矩陣的轉置版本看起來像-x1 = [[1, 3, 5][2, 4, 6]]

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

方法一、使用numpy轉置

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ù)用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的對象,這樣做的好處是節(jié)約了不少的內存。
  • 可以使用 list() 轉換來輸出列表?!緕ip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中為了減少內存,zip() 返回的是一個對象。如需展示列表,需手動 list() 轉換?!?/li>
  • 如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓為列表。

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

>>> 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)              # 元素個數(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()返回的是一個對象。如需展示列表,需手動 list() 轉換。
#print(zip(*A)) #<zip object at 0x000001CD7733A2C8>
print(list(zip(*A)))

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

這里python中星號(*)的作用是將變量中可迭代對象的元素拆解出來。

方法三、使用python列表表達式

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

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]))]

這句寫的清楚一點就是:

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ù)
        #轉置就是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]]

因為轉置矩陣的對稱性, for j in range(i,len(A)) 限制了只遍歷矩陣上三角,必須要限制,如果不限制會導致重復交換。

方法四、新建列表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]]

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

相關文章

  • Python基礎之變量的相關知識總結

    Python基礎之變量的相關知識總結

    今天給大家?guī)淼氖顷P于Python的相關知識,文章圍繞著Python變量展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 詳解Python中的路徑問題

    詳解Python中的路徑問題

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

    Python操作Excel之xlsx文件

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

    Python多線程實例教程

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

    Python利用zhconv模塊進行簡繁體字轉換的案例演示

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

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

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

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

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

    Python利用glob庫實現(xiàn)輕松應對文件和目錄管理

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

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

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

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

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

最新評論