NumPy陣列的高階操作(五)

2021-10-12 07:04:14 字數 4136 閱讀 3075

@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():該函式用於計算方陣的逆矩陣。逆矩陣的定義維如果兩個方陣ab,使得ab = ba = e,則a稱為可逆矩陣,ba的逆矩陣,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,...