(100天2小時第十七天)廣播機制

2021-10-10 10:57:41 字數 1161 閱讀 1574

屬於廣播主要描述於numpy對於不同shape的陣列如何進行算術運算。受限於一些特定約束。

一般都是小的陣列擴充套件為大的陣列,以便能計算。

1.通常情況下,numpy操作的陣列必須是相同shape的。

a = np.array([1.0, 2.0, 3.0])

b = np.array([2.0, 2.0, 2.0])

print(a * b)

[2. 4. 6.]
2.當陣列的shape滿足某些特定約束時,numpy的廣播機制可以使這個約束更寬鬆。最簡單的就是廣播例子就是當陣列和乙個標量操作時。

a = np.array([1.0, 2.0, 3.0])

b = 2.0

print(a * b)

[2. 4. 6.]
上面兩個例子的結果是一樣的,我們可以認為標量b被擴充套件為了和a同樣shape的陣列,b中的新元素就是原來標量的拷貝。這個擴充套件策略僅僅是概念上的,實際上numpy足夠聰明,能自動使用標量做運算,而不需要複製任何東西。所以廣播運算從計算記憶體上來說更優秀。

要能滿足廣播,必須符合下面兩條規則:

廣播之後,輸出陣列的shape是輸入陣列shape的各個軸上的最大值,然後沿著較大shape屬性的方向複製延伸;

要進行廣播機制,要麼兩個陣列的shape屬性一樣,要麼其中有乙個陣列的shape屬性必須有乙個等於1;

a = np.array([2.0, 2.0, 3.0])

b = np.array([2.0, 2.0])

print(a * b)

traceback (most recent call last):

file "c:/users/admin/pycharmprojects/untitled2/17.py", line 9, in print(a * b)

valueerror: operands could not be broadcast together with shapes (3,) (2,)

process finished with exit code 1

a的shape屬性是3,b的shape屬性是2,報錯。要麼一樣要麼有乙個為1.

打卡第十七天

第二次了,又沒過.有時候會有一種失敗感,這幾年好像什麼都沒做好,過的好像也不是很開心。昨天兵查過成績後心情就低落起來了,尤其是聽到晨晨得知她沒過時發出的驚訝聲音 你竟然沒過?時,心情立馬跌到了谷底,回到宿舍就再也繃不住了,大哭了一場,媽媽打 詢問情況,看到女兒哭的傷心,竟也無措起來,不知如何安慰。於...

失業第十七天

失業過了十七天,今天進行了第三場面試,說來也巧有好幾個同學在面試的公司,哈哈哈 找個角落了解下內幕 每個公司都有各自的風格,每個面試官也有各自的特點,才面了三家公司就感受到了完全不同的形式,只有hr面試的內容基本相似,簡單說說吧 第一家 技術面試筆試 上機面試內容就聊聊題目,接著聊聊學校生活,在聊的...

寒假第十七天

python連線資料庫 今天學習了一下python如何連線資料庫以及增刪改查 首先我用的是pymysql,是python連線mysql的乙個庫 首先先得安裝pymysql 命令pip install pymysql 具體 import pymysql 引用pymysql模組 開啟資料庫連線db py...