python(9) numpy多維陣列和矩陣計算

2021-10-18 10:53:25 字數 4569 閱讀 7103

numpy(numerical python)是 python 語言的乙個擴充套件程式庫。其中提供了許多向量和矩陣操作,能讓使用者輕鬆完成最優化、線性代數、積分、插值、特殊函式、傅利葉變換、訊號處理和影象處理、常微分方程求解以及其他科學與工程中常用的計算,不僅方便易用而且效率更高。

numpy 是乙個開源的python科學計算基礎庫,是scipy、pandas等資料處理或科學計算庫的基礎。擁有乙個類似於列表的、強大的n維陣列物件ndarray,它描述了相同型別的元素的集合。具有實用的線性代數、傅利葉變換和隨機生成函式的功能。可以直接完成陣列和矩陣運算,無需迴圈。

1.建立乙個陣列,陣列的shape為(5,2),元素均為0。

import numpy

data=[[

0,0]

,[0,

0],[

0,0]

,[0,

0],[

0,0]

]print

(numpy.array(data)

)

2.建立乙個表示西洋棋棋盤的8*8陣列。其中,棋盤白格用0填充,棋盤黑格用1填充。

import matplotlib.pyplot as plt

import numpy as np

b1 = np.array([[

(1),

(0),

(1),

(0)]

])#構建第一行的一半

b2 = np.array([[

(0),

(1),

(0),

(1)]

])#構建第二行的一半

b3=np.vstack(

(b1,b2)

)#組合成可迴圈利用的部分

b4=np.vstack(

(b3,b3)

)#構造出棋盤的1/4

b5=np.hstack(

(b4,b4)

)#構造出棋盤的1/2

b6=np.vstack(

(b5,b5)

)#構造出完整的棋盤

plt.imshow(b6)

plt.show(

)

numpy.linalg.solve() 函式給出了矩陣形式的線性方程的解。

numpy.linalg.inv() 函式計算矩陣的乘法逆矩陣。

逆矩陣(inverse matrix):設a是數域上的乙個n階矩陣,若在相同數域上存在另乙個n階矩陣b,使得: ab=ba=e ,則我們稱b是a的逆矩陣,而a則被稱為可逆矩陣。注:e為單位矩陣。

考慮以下線性方程:

x + y + z = 6

2y + 5z = -4

2x + 5y - z = 27

可以使用矩陣表示為:

如果矩陣稱為a、x和b,方程變為:

ax = b

或x = a^(-1)b

import numpy as np 

a = np.array([[

1,1,

1],[

0,2,

5],[

2,5,

-1]]

)print

('陣列 a:'

)print

(a)ainv = np.linalg.inv(a)

print

('a 的逆:'

)print

(ainv)

print

('矩陣 b:'

)b = np.array([[

6],[

-4],

[27]]

)print

(b)print

('計算:a^(-1)b:'

)x = np.linalg.solve(a,b)

print

(x)

import numpy as np

a = np.array([[

1,1,

1],[

0,2,

5],[

2,5,

-1]]

)print

('陣列 a:'

)print

(a)ainv = np.linalg.inv(a)

print

('a 的逆:'

)print

(ainv)

print

('矩陣 b:'

)b = np.array([[

6],[

-4],

[27]]

)print

(b)print

('計算:a^(-1)b:'

)x = np.linalg.solve(a, b)

print

(x)

請安裝numpy包,並建立陣列

pycharm匯入第三方庫numpy

import numpy
numpy物件常用屬性

#numpy物件常用屬性

import numpy as np

a=np.array([[

1,2,

3],[

4,5,

6]])

print

('a.ndim='

,a.ndim)

print

(a)print

(a.dtype)

print

(a.size)

b=a.reshape(3,

2)print

(b.ndim)

print

(b)print

(b.shape)

print

(b.itemsize)

建立ndarry物件

#建立ndarry物件

import numpy as np

a=np.array([1

,2,3

])print

(a)b=np.array([[

1,2]

,[3,

4]])

print

(b)c=np.array([1

,2,3

,4,5

],ndmin=2)

print

(c)d=np.array([1

,2,3

],dtype=

complex

)print

(d)

建立nmupy物件

#建立nmupy物件

import numpy as np

x=np.zeros(5)

print

(x)y=np.zeros((5

,),dtype=np.

int)

print

(y)print()

z=np.zeros((2

,2),dtype=[(

'x',

'i4'),

('y'

,'i4')]

)print

(z)

從已有的陣列來建立numpy陣列

#從已有的陣列來建立numpy陣列

import numpy as npx=[

1,2,

3]a=np.asarray(x)

print

(a)print()

y=[(1

,2,3

),(4

,5)]

b=np.asarray(y)

print

(b)

從數值範圍建立numpy陣列

#從數值範圍建立numpy陣列

import numpy as np

x=np.arange(10,

21,2)

print

(x)y=np.linspace(10,

20,5,endpoint=

false

)print

(y)z=np.logspace(0,

9,10,base=2)

print

(z)

陣列的運算

#陣列的運算

import numpy as np

a=np.array([1

,2,3

])b=np.array([3

,4,5

])print

(a+b)

print

(a/b)

print()

c=np.array([[

0],[

1],[

2],[

3]])

d=np.array([1

,2,3

])print

(c)print()

print

(d)print()

print

(c+d)

print

(c*2

)

python 9 numpy中的tile函式

np.tile a,b 即把a按照行 列重複b次 np.tile a m n 把a 在行方向上重複m次,列方向上重複n次,行可以省略,預設為1 import numpy numpy.tile 0,0 5 在列方向上重複 0,0 5次,預設行1次 array 0,0,0,0,0,0,0,0,0,0 n...

python之numpy多維陣列

1.ndarray,是具有向量算術運算且節省空間的多維陣列。2.可以用於對整組的資料快速進行運算的辨準數學函式。3.能夠用於讀寫磁碟資料的工具以及用於作業系統記憶體對映的工具。1.numpy是在乙個連續的記憶體塊中儲存資料,獨立於其他的python內建物件。2.numpy可以在整個陣列上執行複雜的計...

python使用numpy實現多維陣列的排序

1.問題描述 為實現對多維陣列按多列排序,如有三維陣列座標點 x,y,z 現需使其按照x進行公升序排序,其後使y進行公升序排序,最後為z。有4行3列陣列如下 arr 6 3 3 3 1 1 6 2 8 4 0 3 欲使其按如下排序 arrsort 3 1 1 4 0 3 6 2 8 6 3 3 2....