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
请大家帮忙,不要在维和变量中使用相同的变量名。它使你的代码和描述非常难以阅读。 –