numpy 歸一化最後一維資料
阿新 • • 發佈:2019-01-22
import numpy as np
a = np.array([[[1,1,1,1,1], [2,3,4,5,6]], [[1,1,1,1,1], [2,3,4,5,6]]])
b = np.sum(a, axis = -1) # axis: -1 代表最後一維
b = b.reshape([2, 2, 1]) # a 與 b 需要維度相同才能做除法運算
c = a / b
print(a, end="\n\n")
print(b, end="\n\n")
print(c, end='\n\n')
result:
[[[1 1 1 1 1]
[2 3 4 5 6]]
[[1 1 1 1 1]
[2 3 4 5 6]] ]
[[[ 5]
[20]]
[[ 5]
[20]]]
[[[0.2 0.2 0.2 0.2 0.2 ]
[0.1 0.15 0.2 0.25 0.3 ]]
[[0.2 0.2 0.2 0.2 0.2 ]
[0.1 0.15 0.2 0.25 0.3 ]]]
import numpy as np
a = np.array([[[0,0,0,0,0], [0,0,0,0,0]], [[0,0,0,0,0], [0,0,0,0,0]]])
b = np.sum(a, axis = -1) # axis: -1 代表最後一維
b = b.reshape([2, 2, 1]) # a 與 b 需要維度相同才能做除法運算
with np.errstate(divide='ignore' , invalid='ignore'): # 防止提示 Warning
d, c = a / b, a / b
c[ ~ np.isfinite( c )] = 0 # 防止出現Nan, 使得 0/0 = 0
print(d, end='\n\n')
print(c, end='\n\n')
results:
[[[nan nan nan nan nan]
[nan nan nan nan nan]]
[[nan nan nan nan nan]
[nan nan nan nan nan]]]
[[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]] ]