@r星校長
第5
關:線性代數
numpy
的線性代數
線性代數(如矩陣乘法、矩陣分解、行列式以及其他方陣數學等)是任何陣列庫的重要組成部分,一般我們使用*對兩個二維陣列相乘得到的是乙個元素級的積,而不是乙個矩陣點積。因此numpy
提供了線性代數函式庫linalg
,該庫包含了線性代數所需的所有功能。
常用的numpy.linalg
函式:
函式說明
dot矩陣乘法
vdot
兩個向量的點積
det計算矩陣的行列式
inv計算方陣的逆
svd計算奇異值分解(svd)
solve
解線性方程組 ax=b,a是乙個方陣
matmul
兩個陣列的矩陣積
常用函式
dot():該函式返回倆個陣列的點積。對於二維向量,效果等於矩陣乘法;對於一維陣列,它是向量的內積;對於n
維陣列,它是a
的最後乙個軸上的和與b
的倒數第二個軸的乘積。
a=np.array([[
1,2]
,[3,
4]])
a1=np.array([[
5,6]
,[7,
8]])
np.dot(a,a1)
'''輸出:array([[19, 22],
[43, 50]])
'''
det():該函式用於計算輸入矩陣的行列式。
a = np.array([[
14,1]
,[6,
2]])
a=linalg.det(a)
print
(a)'''
輸出:21.999999999999996
'''
inv():該函式用於計算方陣的逆矩陣。逆矩陣的定義維如果兩個方陣a
、b
,使得ab = ba = e
,則a
稱為可逆矩陣,b
為a
的逆矩陣,e
為單位矩陣。
a=np.array([[
1,2]
,[3,
4]])
b=linalg.inv(a)
print
(np.dot(a,b)
)'''
輸出:array([[1.0000000e+00, 0.0000000e+00],
[8.8817842e-16, 1.0000000e+00]])
'''
solve():該函式用於計算線性方程的解。
假設有如下方程組:3x+2y=7 x+4y=14
;
寫成矩陣的形式:[[3,2][1,4]]*[[x],[y]]=[[7],[14]]
;
解如上方程組**如下:
a=np.array([[
3,2]
,[1,
4]])
b=np.array([[
7],[
14]])
linalg.solve(a,b)
''' 輸出:array([[0. ],
[3.5]])
最後解出x=0,y=3.5
'''
matmul():函式返回兩個陣列的矩陣乘積。如果引數中有一維陣列,則通過在其維度上附加1來提公升為矩陣,並在乘法之後去除。
a=[[
3,4]
,[5,
6]]b=
[[7,
8],[
9,10]
]np.matmul(a,b)
'''輸出:array([[ 57, 64],
[ 89, 100]])
'''b=[7
,8]np.matmul(a,b)
'''輸出:array([53, 83])
'''
svd():奇異值分解是一種矩陣分解的方法,該函式用來求解svd。
a=[[
0,1]
,[1,
1],[
1,0]
]linalg.svd(a)
'''輸出:(array([[-4.08248290e-01, 7.07106781e-01, 5.77350269e-01],
[-8.16496581e-01, 2.64811510e-17, -5.77350269e-01],
[-4.08248290e-01, -7.07106781e-01, 5.77350269e-01]]), array([1.73205081, 1. ]), array([[-0.70710678, -0.70710678],
[-0.70710678, 0.70710678]]))
'''
程式設計要求計算性別為男的線性方程解,前兩個數為方程左邊,最後乙個數為方程右邊。
測試輸入:
[
["男",2
,4,40
],["女",8
,3,17
],["男",8
,6,24
]]
預期輸出:
[[-
7.2]
[13.6
]]
開始你的任務吧,祝你成功!
from numpy import linalg
import numpy as np
defstudent
(input_data)
:'''
將輸入資料篩選性別為男,再進行線性方程求解
:param input_data:型別為`list`的輸入資料
:return:型別為`ndarray`
'''result=
# ********* begin *********#
a = np.array(input_data)
x=y=
for i in a:
if i[0]
=="男":[
NumPy陣列的高階操作(二)
r星校長 第2關 比較 掩碼和布林邏輯 比較 在許多情況下,資料集可能不完整或因無效資料的存在而受到汙染。我們要基於某些準則來抽取 修改 計數或對乙個陣列中的值進行其他操作時,就需要掩碼了。接下來將學習如何用布林掩碼來檢視和運算元組中的值。和算術運算子一樣,比較運算子在numpy中也是通過通用函式來...
05 numpy陣列高階操作
import numpy as np x np.array 1 2 3 y np.array 4,5,6 b np.broadcast x,y 對y廣播x 1.print b.index print b.next 迴圈到下乙個 1,4 print b.next 迴圈到下乙個 1,5 print b....
numpy 陣列操作
在給定的區間 start,stop 內返回均勻間隔的值 語法 numpy.arange start,stop,step,dtype none 引數 返回 示例 np.arange 5 array 0,1,2,3,4 np.arange 1,5 array 1,2,3,4 np.arange 1,5,...