我有一个大小为(9,9,200)
的3D NumPy数组和一个大小为(200,200)
的2D数组。
我想取每个通道的形状(9,9,1)
,并生成一个数组(9,9,200)
,每个通道在一行中乘以1个标量200倍,然后对其进行平均,这样得到的数组就是(9,9,1)
。
基本上,如果在一个输入数组中有n
个通道,我希望每个通道乘以n
次并求平均值,这应该适用于所有通道。有没有一种有效的方法
到目前为止,我得到的是-
import numpy as np
arr = np.random.rand(9,9,200)
nchannel = arr.shape[-1]
transform = np.array([np.random.uniform(low=0.0, high=1.0, size=(nchannel,)) for i in range(nchannel)])
for channel in range(nchannel):
# The below line needs optimization
temp = [arr[:,:,i] * transform[channel][i] for i in range(nchannel)]
arr[:,:,channel] = np.sum(temp, axis=0)/nchannel
编辑:
输出:
您需要的是沿最后一个轴的简单矩阵乘法:
相关问题 更多 >
编程相关推荐