0
鑑於兩個陣列一個(形狀= a, b, c, d, e
)和b(形狀= a, x, b
),我想的bx
包括尺寸成一個 ,這樣一個新的陣列c導致形狀= a, x, b, c, d, e
。的b值應均勻分佈:numpy的:從一個陣列整合尺寸到另一個
c.sum(1) == a
b.sum(1) == a.sum(axis=(2, 3, 4)) == c.sum(axis=(1, 3, 4, 5)
是否有這樣做,這是一個幾行numpy的或者是有必要在所有迭代的任何聰明的辦法手動值b[x]
?
我目前的解決方案:
for a, x, b in zip(*_b_.nonzero()):
tot = _a_[a, b].sum()
for c, d, e in zip(*_a_[a, b].nonzero()):
val = _b_[a, a, b]
frac = _a_[a, b, c, d, e]/tot
_c_[a, x, b, c, d, e] = val * frac
'c = a [:,None,...] + b [:,:,:None,None,None]'應該形成一個正確維度的新矩陣。縮放'a'或'b'可能會滿足您的總和條件。我還沒有研究他們足以說肯定。 – hpaulj
我用一些示例代碼更新了描述。我不認爲添加_a_和_b_會起作用... – orange
請大家幫忙,不要在維和變量中使用相同的變量名。它使你的代碼和描述非常難以閱讀。 –