2
我有一個5個暗淡的數組(來自分箱操作),並希望規範(sum == 1爲最後一個維度)。Numpy normalize multi dim(> = 3)數組
我想我找到了答案here但它說: ValueError: Found array with dim 5. the normalize function expected <= 2.
我實現了與5個嵌套循環,像結果:
for en in range(en_bin.nb):
for zd in range(zd_bin.nb):
for az in range(az_bin.nb):
for oa in range(oa_bin.nb):
# reduce fifth dimension (en reco) for normalization
b = np.sum(a[en][zd][az][oa])
for er in range(er_bin.nb):
a[en][zd][az][oa][er] /= b
,但我想vectorise操作。
例如:
In [18]: a.shape
Out[18]: (3, 1, 1, 2, 4)
In [20]: b.shape
Out[20]: (3, 1, 1, 2)
In [22]: a
Out[22]:
array([[[[[ 0.90290316, 0.00953237, 0.57925688, 0.65402645],
[ 0.68826638, 0.04982717, 0.30458093, 0.0025204 ]]]],
[[[[ 0.7973917 , 0.93050739, 0.79963614, 0.75142376],
[ 0.50401287, 0.81916812, 0.23491561, 0.77206141]]]],
[[[[ 0.44507296, 0.06625994, 0.6196917 , 0.6808444 ],
[ 0.8199077 , 0.02179789, 0.24627425, 0.43382448]]]]])
In [23]: b
Out[23]:
array([[[[ 2.14571886, 1.04519487]]],
[[[ 3.27895899, 2.33015801]]],
[[[ 1.81186899, 1.52180432]]]])
傳遞'代替'1'將TRUE'更清楚 – Eric
我現在愛上@Divakar。 – bio
爲什麼你刪除你的[答案](http://stackoverflow.com/questions/42859325/swap-zeros-in-numpy-matrix)它看起來很好,我會+1它 – EdChum