ufunc 函式的廣播機制

2021-09-24 11:30:07 字數 943 閱讀 8998

廣播是指不同形狀的陣列之間執行算數運算的方式,需要遵循4個原則:

1.讓所有輸入陣列都向其中shape最長的陣列看齊,shape中不足的部分都通過在前面加1補齊

2.輸入陣列的shape是輸入陣列shape的各個軸上的最大值

3.如果輸入陣列的某個軸和輸出陣列的對應軸的長度相同或者其長度為1時,這個陣列能夠用來計算,否則出錯。

4.當輸入陣列的某個軸的長度為1時,沿著此軸運算時都用此軸上的第一組值。

import numpy as np

# 建立陣列

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

print('arr1:', arr1)

print('arr1形狀:', arr1.shape)

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

print('arr2:', arr2)

print('arr2形狀:', arr2.shape)

arr3 = np.array([[1, 2, 3, 4], [0, 1, 2, 3]])

print('arr3:', arr3)

print('arr3形狀:', arr3.shape)

# 執行上述兩個陣列相加

arr_new = arr1 + arr2

print('arr_new:', arr_new)

# 不滿足廣播機制

arr_new = arr1 + arr3

print('arr_new:', arr_new)

"""讓所有的shape向最長的看齊

arr1 (2,4,5)

arr2 (4,1) 補齊 (1,4,1)

arr3 (5,) 補齊 (1,5,1)

"""

常用通用函式 ufunc

求絕對值 abs data orfabs data 區別 1 abs 可以求複數的絕對值,fabs 不可以。2 fabs 求的絕對值精確到double,abs 是以輸入的資料為精確指標。求平方根 np.sqrt data 等價於data 0.5。求平方np.square x 求x的平方。求指數np....

numpy的函式物件ufunc詳解

ufunc物件是numpy的兩大基本物件之一,另乙個是array。ufunc是universal function object的縮寫。在python裡面,一切皆為物件,包括我們的函式,而numpy裡面的函式是ufunc物件的例項,如下所示 type np.add 返回的是 即ufunc物件 既然是...

陣列的廣播機制

1 讓所有輸入陣列都向其中shape最長的陣列看齊,shape中不足的部分都通過在前面加1補齊。2 輸出陣列的shape是輸入陣列shape的各個軸上的最大值。3 如果各個輸入陣列的對應軸的長度相同或者其長度為1時,這樣的陣列之間能夠用來計算,否則 出錯。4 當輸入陣列的某個軸的長度為1時,沿著此軸...