我有一个numpy数组a,a.shape=(48,90,144).我想利用的加权平均值a沿着使用阵列的权重的第一轴线b,b.shape=(90,144).所以输出应该是一个numpy形状的数组(48,).
我知道这可以通过列表理解来完成:
np.array([np.average(a[i], weights=b) for i in range(48)])
Run Code Online (Sandbox Code Playgroud)
但我想避免必须从列表转换回numpy数组.
有人可以帮忙吗?我确信这可能是使用numpy函数和切片,但我卡住了.谢谢!
(这个问题类似于沿轴的多维权重的Numpy平均,但更复杂.)
我有一个numpy的阵列,d,d.shape=(16,3,90,144),和一个numpy的权重的阵列,e,e.shape=(16,3).我想a使用沿轴1 的加权平均值e.所以输出应该是一个有形状的numpy数组(16,90,144).我可以通过列表理解来实现这一目标:
np.array([np.average(d[n], weights=e[n], axis=0) for n in range(16)])
Run Code Online (Sandbox Code Playgroud)
但正如在上一个问题中,我想避免必须从列表转换回numpy数组.这种情况比前一个问题更复杂,因为权重每次都不相同(即weights=e[n],不是weights=b).
有人可以帮忙吗?谢谢!
我有一个 numpy 数组a,a.shape=(17,90,144). 我想找到 的每列的最大值cumsum(a, axis=0),但保留原始符号。换句话说,如果对于给定列,a[:,j,i]的最大值cumsum对应于负值,我想保留减号。
该代码np.amax(np.abs(a.cumsum(axis=0)))获取了大小,但不保留符号。相反,使用它np.argmax可以获得我需要的索引,然后我可以将其插入到原始cumsum数组中。但我找不到一个好的方法来做到这一点。
下面的代码可以工作,但是很脏而且很慢:
max_mag_signed = np.zeros((90,144))
indices = np.argmax(np.abs(a.cumsum(axis=0)), axis=0)
for j in range(90):
for i in range(144):
max_mag_signed[j,i] = a.cumsum(axis=0)[indices[j,i],j,i]
Run Code Online (Sandbox Code Playgroud)
必须有一种更干净、更快的方法来做到这一点。有任何想法吗?