如何让 numpy 在缩减操作后广播操作
How to get numpy to broadcast an operation after a reduction operation
我正在尝试对最后一个维度的一些数据进行标准化。
#sample data
x = numpy.random.random((3, 1, 4, 16, 16))
x[1] = x[1]*2
x[2] = x[2]*4
我可以得到平均值,
m = x.mean((-3, -2, -1))
现在,x.shape 是 (3, 1, 4, 16, 16) 而 m.shape 是 (3, 1),我想从每个样本中减去平均值。到目前为止我有。
for i in range(x.shape[0]):
for j in range(x.shape[1]):
x[i,j] = x[i,j] - m[i,j]
可行,但有两个缺点。我正在使用显式循环,它要求形状有 5 个维度。
只需使用 keepdims
arg 保持维度,然后减去 -
m = x.mean((-3, -2, -1),keepdims=True)
x -= m
无论用于减少的轴如何,这都可以工作,应该是一个干净的解决方案。
我正在尝试对最后一个维度的一些数据进行标准化。
#sample data
x = numpy.random.random((3, 1, 4, 16, 16))
x[1] = x[1]*2
x[2] = x[2]*4
我可以得到平均值,
m = x.mean((-3, -2, -1))
现在,x.shape 是 (3, 1, 4, 16, 16) 而 m.shape 是 (3, 1),我想从每个样本中减去平均值。到目前为止我有。
for i in range(x.shape[0]):
for j in range(x.shape[1]):
x[i,j] = x[i,j] - m[i,j]
可行,但有两个缺点。我正在使用显式循环,它要求形状有 5 个维度。
只需使用 keepdims
arg 保持维度,然后减去 -
m = x.mean((-3, -2, -1),keepdims=True)
x -= m
无论用于减少的轴如何,这都可以工作,应该是一个干净的解决方案。