1. 程式人生 > >numpy 歸一化最後一維資料

numpy 歸一化最後一維資料

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.]]
]