教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Numpy數(shù)組操作教程【傳智教育】

更新時間:2021年06月11日16時26分 來源:傳智教育 瀏覽次數(shù):

1 數(shù)組與數(shù)的運算

arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr + 1
arr / 2
# 可以對比python列表的運算,看出區(qū)別
a = [1, 2, 3, 4, 5]
a * 3

2 數(shù)組與數(shù)組的運算

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])

上面這個能進行運算嗎,結(jié)果是不行的!

2.1 廣播機制

數(shù)組在進行矢量化運算時,要求數(shù)組的形狀是相等的。當形狀不相等的數(shù)組執(zhí)行算術(shù)運算的時候,就會出現(xiàn)廣播機制,該機制會對數(shù)組進行擴展,使數(shù)組的shape屬性值一樣,這樣,就可以進行矢量化運算了。下面通過一個例子進行說明:

arr1 = np.array([[0],[1],[2],[3]])
arr1.shape
# (4, 1)

arr2 = np.array([1,2,3])
arr2.shape
# (3,)

arr1+arr2
# 結(jié)果是:
array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]])

上述代碼中,數(shù)組arr1是4行1列,arr2是1行3列。這兩個數(shù)組要進行相加,按照廣播機制會對數(shù)組arr1和arr2都進行擴展,使得數(shù)組arr1和arr2都變成4行3列。

下面通過一張圖來描述廣播機制擴展數(shù)組的過程:

image-20190620005224076

廣播機制實現(xiàn)了時兩個或兩個以上數(shù)組的運算,即使這些數(shù)組的shape不是完全相同的,只需要滿足如下任意一個條件即可。

  • 1.數(shù)組的某一維度等長。
  • 2.其中一個數(shù)組的某一維度為1 。

廣播機制需要擴展維度小的數(shù)組,使得它與維度最大的數(shù)組的shape值相同,以便使用元素級函數(shù)或者運算符進行運算。

如果是下面這樣,則不匹配:

A  (1d array): 10
B  (1d array): 12
A  (2d array):      2 x 1
B  (3d array):  8 x 4 x 3

思考:下面兩個ndarray是否能夠進行運算?

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1], [3]])

3 小結(jié)

  • 數(shù)組運算,滿足廣播機制,就OK【知道】
    • 1.維度相等
    • 2.shape(其中對應(yīng)的地方為1,也是可以的)


猜你喜歡:

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

NumPy數(shù)組有幾種創(chuàng)建方法?

NumPy數(shù)組對象介紹:ndarray對象的常用屬性

傳智教育人工智能培訓課程

0 分享到:
和我們在線交談!