2024-09-27 00:12:19 发布
网友
寻找计算平均值和标准每通道在一批有效。在
详细信息:
所以每个批次的大小是[128,32,32,3]。在
有很多批处理(naivemethod在所有批处理中花费~4min)。在
我想输出2个数组:(meanR,meanG,meanB)和(stdR,stdG,stdB)
(另外,如果有一种有效的方法在计算后对批处理执行算术运算,那么这将很有帮助。例如,从每个图像中减去整个数据集的平均值)
假设你想得到多轴的平均值(如果我没弄错的话)。numpy.mean(a, axis=None)已经支持多轴平均值,如果轴是tuple。在
numpy.mean(a, axis=None)
tuple
我不太清楚你说的天真的方法是什么意思。在
你可以用这个方法来计算R,G,B的平均值和标准差
a = np.random.rand(128,32,32,3) for i in range(3): means = [m for m in np.mean(a, axis = (3, i))] for i in range(3): stds = [s for s in np.std(a, axis = (3, i))]
而axis=(3,i)3代表通道,i代表颜色(R,G,B)。你也可以参考这个链接。Get mean of 2D slice of a 3D array in numpy 。我希望这能对你有所帮助。在
axis=(3,i)
i
如果我正确理解您的意思,并且您想计算所有图像的平均值和标准值:
演示:两张(2,2,3)形状的图片(为了简单起见):
In [189]: a Out[189]: array([[[[ 1, 2, 3], [ 4, 5, 6]], [[ 7, 8, 9], [10, 11, 12]]], [[[13, 14, 15], [16, 17, 18]], [[19, 20, 21], [22, 23, 24]]]]) In [190]: a.shape Out[190]: (2, 2, 2, 3) In [191]: np.mean(a, axis=(0,1,2)) Out[191]: array([ 11.5, 12.5, 13.5]) In [192]: np.einsum('ijkl->l', a)/float(np.prod(a.shape[:3])) Out[192]: array([ 11.5, 12.5, 13.5])
速度测量:
假设你想得到多轴的平均值(如果我没弄错的话)。
numpy.mean(a, axis=None)
已经支持多轴平均值,如果轴是tuple
。在我不太清楚你说的天真的方法是什么意思。在
你可以用这个方法来计算R,G,B的平均值和标准差
而
axis=(3,i)
3代表通道,i
代表颜色(R,G,B)。你也可以参考这个链接。Get mean of 2D slice of a 3D array in numpy 。我希望这能对你有所帮助。在如果我正确理解您的意思,并且您想计算所有图像的平均值和标准值:
演示:两张(2,2,3)形状的图片(为了简单起见):
速度测量:
^{pr2}$相关问题 更多 >
编程相关推荐