如何从 n 个不同的二维数组中取数组值的平均值? Python
How to take average of array values from n different 2D arrays? Python
我有一个名为“all_data”的数组,如下所示:
array([[[102, 107, 111],
[101, 106, 110],
[100, 105, 109],
...,
[221, 166, 99],
[221, 166, 99],
[221, 166, 99]],
[[ 95, 100, 104],
[ 98, 103, 107],
[102, 107, 111],
...,
[219, 165, 95],
[218, 164, 94],
[218, 164, 94]]])
我的目标是取同一索引的每个列值的平均值。例如,由于这个较大的数组有 2 个二维数组(尽管我的数据最多可以有 200 个需要平均的二维数组),平均的最终结果将是 1 个二维数组,第一个子列表为 [98.5, 103.5, 107.5]
当我尝试使用 numpy 并执行 all_data.mean(axis=2) 时,我得到一个看起来异常的数组:
array([[106.66666667, 105.66666667, 104.66666667, ..., 162. ,
162. , 162. ],
[ 99.66666667, 102.66666667, 106.66666667, ..., 159.66666667,
158.66666667, 158.66666667]])
我不确定问题出在哪里,因为我认为它应该对每个子列表的列值进行平均,但发生了一些不同的事情。
如有任何帮助,我们将不胜感激
解决方法是设置axis=0。
all_data.mean(axis=0)
numpy 处理轴的方式是 折叠 该轴。轴号是到达该轴的顺序。对于二维数组,我们有这样的东西:
arr = [[x,x,x], [x,x,x]] = [[x,x,x],
[x,x,x]]
- 当轴 0 折叠时,我们得到这个形状:[x, x, x]
- 当轴 1 折叠时,我们得到这个形状:[x, x]
对于更大的多维数组,同样适用,只是更难可视化。考虑折叠的另一种方法是通过将其设置为 1 来删除该维度。为了更清楚起见,这是 3D 示例:
arr = [[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]],
[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]]]
arr,作为一个 3d 矩阵,尺寸为 2x4x3
沿着轴 0 折叠,我们得到一个 1x4x3 --> 4x3 的形状:
[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]]
沿着轴 1 折叠,我们得到一个 2x1x3 --> 2x3 的形状:
[[x, x, x],
[x, x, x]]
沿轴 2 折叠,我们得到 2x4x1 --> 2x4 形状:
[[x, x, x, x],
[x, x, x, x]]
我有一个名为“all_data”的数组,如下所示:
array([[[102, 107, 111],
[101, 106, 110],
[100, 105, 109],
...,
[221, 166, 99],
[221, 166, 99],
[221, 166, 99]],
[[ 95, 100, 104],
[ 98, 103, 107],
[102, 107, 111],
...,
[219, 165, 95],
[218, 164, 94],
[218, 164, 94]]])
我的目标是取同一索引的每个列值的平均值。例如,由于这个较大的数组有 2 个二维数组(尽管我的数据最多可以有 200 个需要平均的二维数组),平均的最终结果将是 1 个二维数组,第一个子列表为 [98.5, 103.5, 107.5]
当我尝试使用 numpy 并执行 all_data.mean(axis=2) 时,我得到一个看起来异常的数组:
array([[106.66666667, 105.66666667, 104.66666667, ..., 162. ,
162. , 162. ],
[ 99.66666667, 102.66666667, 106.66666667, ..., 159.66666667,
158.66666667, 158.66666667]])
我不确定问题出在哪里,因为我认为它应该对每个子列表的列值进行平均,但发生了一些不同的事情。
如有任何帮助,我们将不胜感激
解决方法是设置axis=0。
all_data.mean(axis=0)
numpy 处理轴的方式是 折叠 该轴。轴号是到达该轴的顺序。对于二维数组,我们有这样的东西:
arr = [[x,x,x], [x,x,x]] = [[x,x,x],
[x,x,x]]
- 当轴 0 折叠时,我们得到这个形状:[x, x, x]
- 当轴 1 折叠时,我们得到这个形状:[x, x]
对于更大的多维数组,同样适用,只是更难可视化。考虑折叠的另一种方法是通过将其设置为 1 来删除该维度。为了更清楚起见,这是 3D 示例:
arr = [[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]],
[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]]]
arr,作为一个 3d 矩阵,尺寸为 2x4x3
沿着轴 0 折叠,我们得到一个 1x4x3 --> 4x3 的形状:
[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]]
沿着轴 1 折叠,我们得到一个 2x1x3 --> 2x3 的形状:
[[x, x, x],
[x, x, x]]
沿轴 2 折叠,我们得到 2x4x1 --> 2x4 形状:
[[x, x, x, x],
[x, x, x, x]]