矩陣的運算 加法,數(shù)乘,減法,轉(zhuǎn)置
在坐標(biāo)系中可以這么去理解, 相當(dāng)于一個圖形擴大或縮小了幾倍
矩陣的基本運算法則
矩陣的加減
矩陣的加法就是矩陣的對應(yīng)位置相加,減法也是一樣就是對應(yīng)位置相減
數(shù)乘
轉(zhuǎn)置
轉(zhuǎn)置的操作和向量是一樣的,就是把 aij 變成 aji,把行和列互換一下
對于矩陣而言, 轉(zhuǎn)置其實就相當(dāng)于把主對角線兩側(cè)的元素進行了調(diào)換
高維數(shù)組的轉(zhuǎn)置方法tranpose
numpy.transpose
方法用于交換數(shù)組的維度,也就是將數(shù)組的行和列進行互換。對于二維數(shù)組來說,它實際上就是進行轉(zhuǎn)置操作。
函數(shù)簽名:
numpy.transpose(a, axes=None)
numpy.ndarray.transpose(axes=None)
參數(shù):
-
numpy.ndarray
:要進行轉(zhuǎn)置操作的數(shù)組。 -
axes
:可選參數(shù),用于指定交換維度的順序(索引的形式)。默認(rèn)情況下,會交換所有維度??梢詡魅胍粋€整數(shù)元組來指定交換的維度順序。
返回值:
- 返回轉(zhuǎn)置后的數(shù)組。
注意事項:
- 如果數(shù)組是一維的,
transpose
方法不會對其進行轉(zhuǎn)置,直接返回原數(shù)組。 - 如果數(shù)組是多維的,
transpose
方法可以根據(jù)axes
參數(shù)指定的順序?qū)S度進行調(diào)整。
示例:
import numpy as np
# 二維數(shù)組的轉(zhuǎn)置(轉(zhuǎn)置相當(dāng)于行列互換)
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 法一:transposed_arr = np.transpose(arr)
# 轉(zhuǎn)置數(shù)組(行列互換)
transposed_arr = arr.transpose()
print(transposed_arr)
# 輸出:
# [[1 4]
# [2 5]
# [3 6]]
# 也可以使用T屬性來進行轉(zhuǎn)置
transposed_arr2 = arr.T
print(transposed_arr2)
# 輸出:
# [[1 4]
# [2 5]
# [3 6]]
在線性代數(shù)和數(shù)組操作中,經(jīng)常需要對數(shù)組的維度進行變換,numpy.transpose
方法是一個非常有用的工具。它可以用于處理各種維度不一致的數(shù)組,以及進行矩陣轉(zhuǎn)置等操作。文章來源:http://www.zghlxwxcb.cn/news/detail-841405.html
??實戰(zhàn):
# coding: utf-8
import numpy as np
# 矩陣的加減
n1 = np.arange(6).reshape(2, 3)
print('矩陣的加減演示:', n1 + n1, '\n', n1 - n1)
print('=' * 20)
# 矩陣的數(shù)乘
print(n1 * 5)
print('=' * 20)
# 矩陣的轉(zhuǎn)置
print(n1.T) # 轉(zhuǎn)置
print('=' * 20)
v = np.array([1, 2, 3])
print(v.T) # 一位數(shù)組轉(zhuǎn)置后仍然顯示為行向量, 但它其實已經(jīng)轉(zhuǎn)置了
print('=' * 20)
# 我們可以通過改變形狀把它變?yōu)橐粋€列向量 注:轉(zhuǎn)置后將會變?yōu)閚行一列的二維數(shù)組
print(v.reshape(-1, 1)) # -1代表會根據(jù)數(shù)組的總元素個數(shù)和其他維度的大小自動計算該維度的大小
print('=' * 20)
print(n1)
print(n1.reshape(3, 2)) # 千萬要注意, 對于更高維度的數(shù)組來說不能通過reshape改變形狀來達(dá)到轉(zhuǎn)置的目的, 此方法僅限于一維數(shù)組(向量)
print('=' * 20)
n1 = np.arange(6).reshape(2, 3)
# 查看當(dāng)前數(shù)組的形狀
print('數(shù)組的形狀:', n1.shape)
n2 = n1.transpose(1, 0) # 1, 0指的是維度的索引順序, 前一行的結(jié)果為'數(shù)組的形狀: (2, 3)', 此時維度一索引為0,維度二索引為1
print(n2)
# 我們再來打印下轉(zhuǎn)置后的維度
print(n2.shape) # result:(3, 2), 可以看到維度由2行3列變成了3行2列
print('=' * 20)
temp1 = np.arange(24).reshape((2, 3, 4)) # 創(chuàng)建一個三維數(shù)組, 可以理解為兩個三行四列的元素組成的
print(temp1)
# 進行三維數(shù)組的轉(zhuǎn)置
temp2 = temp1.transpose(1, 0, 2) # 此時的維度對應(yīng)的是(3, 2, 4)
print('轉(zhuǎn)置后的數(shù)組\n', temp2)
print('采用reshape直接改變形狀的數(shù)組\n', temp1.reshape((3, 2, 4)))
"""
result:
可以看到高維數(shù)組已經(jīng)不能簡單的以改變數(shù)組的維度來去轉(zhuǎn)置, 改變維度轉(zhuǎn)置只限于一維數(shù)組
轉(zhuǎn)置后的數(shù)組
[[[ 0 1 2 3]
[12 13 14 15]]
[[ 4 5 6 7]
[16 17 18 19]]
[[ 8 9 10 11]
[20 21 22 23]]]
采用reshape直接改變形狀的數(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]]]"""
result:文章來源地址http://www.zghlxwxcb.cn/news/detail-841405.html
矩陣的加減演示: [[ 0 2 4]
[ 6 8 10]]
[[0 0 0]
[0 0 0]]
====================
[[ 0 5 10]
[15 20 25]]
====================
[[0 3]
[1 4]
[2 5]]
====================
[1 2 3]
====================
[[1]
[2]
[3]]
====================
[[0 1 2]
[3 4 5]]
[[0 1]
[2 3]
[4 5]]
====================
數(shù)組的形狀: (2, 3)
[[0 3]
[1 4]
[2 5]]
(3, 2)
====================
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
轉(zhuǎn)置后的數(shù)組
[[[ 0 1 2 3]
[12 13 14 15]]
[[ 4 5 6 7]
[16 17 18 19]]
[[ 8 9 10 11]
[20 21 22 23]]]
采用reshape直接改變形狀的數(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]]]
進程已結(jié)束,退出代碼0
到了這里,關(guān)于12-矩陣的運算_加減法_數(shù)乘_轉(zhuǎn)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!