Python 如何计算数组堆栈的平均值?
我的堆栈是这样的Python 如何计算数组堆栈的平均值?,python,numpy,Python,Numpy,我的堆栈是这样的 array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[2, 2, 2], [2, 2, 2], [2, 2, 2]]]) 我想要这个结果: array([[ 1.5, 2. , 2.5], [ 3. , 3.5, 4. ], [ 4.5, 5. , 5.5]]) 我更新了我的问题,我想现在更清楚了。首先,你没有一堆2D数组
array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[2, 2, 2],
[2, 2, 2],
[2, 2, 2]]])
我想要这个结果:
array([[ 1.5, 2. , 2.5],
[ 3. , 3.5, 4. ],
[ 4.5, 5. , 5.5]])
我更新了我的问题,我想现在更清楚了。首先,你没有一堆2D数组,你有三个独立的变量 幸运的是,NumPy中的大多数函数都采用类似于数组的参数。元组
(a,b,c)
非常类似于数组,它将被转换为您首先应该拥有的3D数组
无论如何,取平均值的明显功能是。正如文件所说:
默认情况下,在展平阵列上取平均值,否则在指定轴上取平均值
因此,只需指定新创建的轴0所需的轴
np.mean((a,b,c), axis=0)
在更新的问题中,您现在有一个2x3x3数组,
a
,而不是三个2x2数组,a
、b
和c
,您需要第一个轴(维度为2的轴)的平均值。这是同样的事情,但稍微容易一些:
np.mean(a, axis=0)
当然,4、7和3的平均值是4.66667,而不是4。在你更新的问题中,这似乎是你想要的;在你最初的问题中…我不确定你是否想要截断或取整,或者你是否想要中值或其他东西而不是平均值,或者其他任何东西,但这些都很简单(在调用中添加
dtype=int64
,调用.round()
在结果上,调用中值
,而不是均值
,等等)。,首先,您没有2D数组的堆栈,而是有三个独立的变量
幸运的是,NumPy中的大多数函数都采用类似于数组的参数。元组(a,b,c)
非常类似于数组,它将被转换为您首先应该拥有的3D数组
无论如何,取平均值的明显功能是。正如文件所说:
默认情况下,在展平阵列上取平均值,否则在指定轴上取平均值
因此,只需指定新创建的轴0所需的轴
np.mean((a,b,c), axis=0)
在更新的问题中,您现在有一个2x3x3数组,
a
,而不是三个2x2数组,a
、b
和c
,您需要第一个轴(维度为2的轴)的平均值。这是同样的事情,但稍微容易一些:
np.mean(a, axis=0)
当然,4、7和3的平均值是4.66667,而不是4。在你更新的问题中,这似乎是你想要的;在您最初的问题中……我不确定您是否想要截断或取整,或者您是否想要中值或其他东西而不是平均值,或者其他任何东西,但这些都很简单(将
dtype=int64
添加到调用中,调用.round()
对结果调用中值而不是平均值,等等)
根据您的输出,您似乎在寻找中值,而不是均值
>>> np.median((a,b,c), axis=0)
array([[ 1., 5.],
[ 6., 4.]])
根据您的输出,您似乎在寻找中值,而不是均值
>>> np.median((a,b,c), axis=0)
array([[ 1., 5.],
[ 6., 4.]])
二维数组的堆栈是一个三维数组,而不是三个独立的变量。4、7和3的平均值是4.667,而不是4。您是要截断它,还是要取整它,还是要模式的中位数或中位数或其他东西,而不是平均值?我需要一个浮点数(4.666),这只是一个示例,很抱歉混淆您的编辑从3个2x2数组更改为一个形状为2x3x3的单个数组。这是您真正想要的,还是您想要一个3x2x2阵列作为示例,还是其他什么?无论如何,您似乎希望跨轴0进行平均,就像您以前希望跨“外部轴”进行平均一样,因此您的编辑不应更改任何内容。查看我的更新答案。2D数组的堆栈将是3D数组,而不是三个单独的变量。4、7和3的平均值是4.66667,而不是4。您是要截断它,还是要取整它,还是要模式的中位数或中位数或其他东西,而不是平均值?我需要一个浮点数(4.666),这只是一个示例,很抱歉混淆您的编辑从3个2x2数组更改为一个形状为2x3x3的单个数组。这是您真正想要的,还是您想要一个3x2x2阵列作为示例,还是其他什么?无论如何,您似乎希望跨轴0进行平均,就像您以前希望跨“外部轴”进行平均一样,因此您的编辑不应更改任何内容。看看我最新的答案。你为什么要做那么多额外的工作?只需调用np.mean
。(还有,我想他可能想要平均数,但他只想要整数,而不是浮点数。但我可能错了。)你为什么要做那么多额外的工作?只需调用np.mean
。(另外,我想他可能想要平均值,但他只想要整数,而不是浮点数。但我可能错了。)@gustavgans:好的,这是否意味着这就是你想要的全部(当然,除了你更新的问题,现在只是np.mean(a,axis=0)
)?@gustavgans:好的,这是否意味着这就是你想要的全部(当然,除了你更新的问题,它现在只是np.mean(a,axis=0)
)?