[英]3D numpy array MinMax Normalization
我想 MinMax 規范化以下 3D numpy 數組“在 2D 層級別”:
np.array([[[0, 1, 2],
[3, 4, 5],
[6, 7, 8]],
[[0, 1, 2],
[3, 4, 5],
[6, 7, 10]],
[[0, 1, 2],
[3, 4, 5],
[6, 7, 12]]])
獲得:
np.array([[[0. , 0.1, 0.2],
[0.3, 0.4, 0.5],
[0.6, 0.7, 1. ]],
[[0. , 0.1, 0.2],
[0.3, 0.4, 0.5],
[0.6, 0.7, 1. ]],
[[0. , 0.08333333, 0.16666667],
[0.25 , 0.33333333, 0.41666667],
[0.5 , 0.58333333, 1. ]]])
知道如何在不使用循環的情況下完成嗎? 提前謝謝了 !
一種方法是按如下方式使用.max
:
res = arr / arr.max(axis=(1, 2), keepdims=True)
print(res)
Output
[[[0.125 0.125 0.25 ]
[0.375 0.5 0.625 ]
[0.75 0.875 1. ]]
[[0. 0.1 0.2 ]
[0.3 0.4 0.5 ]
[0.6 0.7 1. ]]
[[0. 0.08333333 0.16666667]
[0.25 0.33333333 0.41666667]
[0.5 0.58333333 1. ]]]
如果您將數組定義為:
x = np.array([[[0, 1, 2],
[3, 4, 5],
[6, 7, 8]],
[[0, 1, 2],
[3, 4, 5],
[6, 7, 10]],
[[0, 1, 2],
[3, 4, 5],
[6, 7, 12]]])
您可以使用 reshape 來展平數組:
(
x.reshape(x.shape[-1],x.shape[0]*x.shape[1]).T /
np.max(x.reshape(x.shape[2], x.shape[0]*x.shape[1]), axis=1)
).T.reshape(x.shape)
這里數組被展平為二維數組,其中可以取軸的最大值 = 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.