首頁人工智能技術(shù)資訊正文

Numpy基礎(chǔ)操作:數(shù)組之間形狀相互轉(zhuǎn)換

更新時(shí)間:2021-12-08 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

ndarray對(duì)象提供了一些可以便捷地改變數(shù)組基礎(chǔ)形狀的屬性和方法,例如,將一個(gè)3行4列的二維數(shù)組轉(zhuǎn)換成6行2列的二維數(shù)組,關(guān)于這些屬性和方法的具體說明如表9-3所示。

1638958581723_1.jpg
上述這些方法都能夠改變數(shù)組的形狀,但是,reshape()、ravel()方法和T屬性返的都是一個(gè)已經(jīng)修改的新數(shù)組,并不會(huì)修改原始數(shù)組。例如:

>>> import numpy as np
>>> arr = np.array([[1, 2, 3], [4, 5, 6]]]    #創(chuàng)建一個(gè)2行3列的數(shù)組
>>> arr
array([[1, 2, 3],
      [4,5,6]])
>>> new_arr = arr.reshape((3, 2))     #返回維度為(3,2)的數(shù)組
>>> new arr
array([[1, 2],
      [3,4],
      [5,6]])
>>> arr.ravel()     #對(duì)數(shù)組進(jìn)行降維處理
array([1, 2, 3, 4, 5, 6])
>>> arr.T           #對(duì)數(shù)組進(jìn)行軸對(duì)換
array([[1, 4],
      [2,5],
      [3,6]])
>>> arr            #查看原始數(shù)組是否發(fā)生變化
array([[1, 2, 3],    
[4,5,6]])

numpy數(shù)組制樣支持索引和切片操作,具體的用法與序列類型相似。例如:

>>>arr = np.arange(1,9).reshape((4,22)) #生成4行2列的數(shù)組
>>> arr
array([[1, 2],
      [3,4],
      [5,6],
      [7,8]])
>>> arr[2]            #獲取第2行數(shù)據(jù)
array([5, 6])
>>> arr[1:3]          #獲取第1~2行數(shù)據(jù)
array([[3, 4],
      [5,6]])

除此之外,numpy中提供了一批具有基本數(shù)學(xué)運(yùn)算功能的函數(shù),如表9-4所示。

表9-4 numpy模塊的算術(shù)運(yùn)算函數(shù)
1638958602499_函數(shù).jpg

表9-4中列舉的所有運(yùn)算函數(shù)的參數(shù)y都是可選的,如果指定了參數(shù)y,結(jié)果將被保存到y(tǒng)中,比如np.add(a,b,a)表示a+=b;如果沒有指定參數(shù)y,結(jié)果將被保存到一個(gè)新創(chuàng)建的數(shù)組中,比如c=np.add(a,b)表示c=a+b。

數(shù)組無須循環(huán)遍歷便可以對(duì)每個(gè)元素執(zhí)行批量的算術(shù)操作,也就是說形狀相同的數(shù)組之間執(zhí)行算術(shù)運(yùn)算時(shí),會(huì)應(yīng)用到位置相同的元素上進(jìn)行計(jì)算。例如,數(shù)組a=[1,2,3]和數(shù)組b=[4,5,6],a*b所得的結(jié)果為1*4、2*5和3*6組成的一個(gè)新數(shù)組。若兩個(gè)數(shù)組的基礎(chǔ)形狀不同,numpy可能會(huì)觸發(fā)廣播機(jī)制,該機(jī)制需要滿足以下任一條件。






猜你喜歡:

Numpy數(shù)組運(yùn)算【黑馬程序員】

Python是怎樣創(chuàng)建NumPy數(shù)組的?

NumPy常用的數(shù)據(jù)類型有哪些?怎樣進(jìn)行轉(zhuǎn)換?

numpy array和python list相比有什么優(yōu)勢(shì)?

黑馬程序員AI人工智能培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!