如何在 Python 中的较大矩阵内平均每 50 个值
How to average every 50 values inside a larger matrix in Python
我有一个包含 7000 张图像的数组,这些图像的大小为 224x224x3。因此整个矩阵的形状是(7000, 224, 224, 3)
。我想要做的是 select 每 50 张图像并计算它们的平均值,从 50 张图像中平均获得 1 帧,所以我总共有一个大小为 (140, 224, 224, 3)
的数组。一个最小的可重现示例:
import numpy as np
array = np.random.randint(255, size=(7000, 224, 224, 3))
mean_frame = np.mean(([frame for frame in array]), axis=0)
这是我能得到的最接近的图像,它会给我一张 (224, 224, 3)
的图像,因为它对所有图像进行平均,但我想改为每 50 帧抓取一次。基本上,我想知道如何从这个更大的图像阵列中每 50 帧 select 并对它们进行平均以获得我想要的相同平均帧?
一种方法是重塑数组,使其变为 140 x 50 x 224 x 224 x 3
,然后沿第二个轴取平均值:
mean_frame = np.mean(np.reshape(array, (140, 50, 224, 224, 3)), axis=1)
通过以这种方式重塑数组,第一个维度中的每个元素都可以访问一批 50 张图像,因此沿第二个维度取平均值将为每个元素沿第一个维度取 50 个图像的平均值。
我有一个包含 7000 张图像的数组,这些图像的大小为 224x224x3。因此整个矩阵的形状是(7000, 224, 224, 3)
。我想要做的是 select 每 50 张图像并计算它们的平均值,从 50 张图像中平均获得 1 帧,所以我总共有一个大小为 (140, 224, 224, 3)
的数组。一个最小的可重现示例:
import numpy as np
array = np.random.randint(255, size=(7000, 224, 224, 3))
mean_frame = np.mean(([frame for frame in array]), axis=0)
这是我能得到的最接近的图像,它会给我一张 (224, 224, 3)
的图像,因为它对所有图像进行平均,但我想改为每 50 帧抓取一次。基本上,我想知道如何从这个更大的图像阵列中每 50 帧 select 并对它们进行平均以获得我想要的相同平均帧?
一种方法是重塑数组,使其变为 140 x 50 x 224 x 224 x 3
,然后沿第二个轴取平均值:
mean_frame = np.mean(np.reshape(array, (140, 50, 224, 224, 3)), axis=1)
通过以这种方式重塑数组,第一个维度中的每个元素都可以访问一批 50 张图像,因此沿第二个维度取平均值将为每个元素沿第一个维度取 50 个图像的平均值。