Python np.掩蔽数组值数组的中值错误错误:包含多个元素的数组的真值不明确。使用a.any()或a.all()

Python np.掩蔽数组值数组的中值错误错误:包含多个元素的数组的真值不明确。使用a.any()或a.all(),python,arrays,python-3.x,masked-array,Python,Arrays,Python 3.x,Masked Array,我想计算一个蒙版数组的中值。计算平均值没有问题,但当我想计算中值时,误差会上升,我不知道为什么: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 下面是一个再现问题的最小示例: import numpy as np import numpy.mask as ma test = ma.masked_array([[1,2,3,4],[5

我想计算一个蒙版数组的中值。计算平均值没有问题,但当我想计算中值时,误差会上升,我不知道为什么:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
下面是一个再现问题的最小示例:

import numpy as np
import numpy.mask as ma

test = ma.masked_array([[1,2,3,4],[5,6,7,8]], mask = [[False,False,False,False],[False,False,False,False]])

test_tot= np.zeros(4,dtype='object')

test_tot[0]=test
test_tot[1]=test
test_tot[2]=test
test_tot[3]=test

np.mean(test_tot) # OK
np.median(test_tot) # PROBLEM ?

提前感谢您的建议

您的
测试集合
阵列是二维阵列的一维阵列,而不是三维阵列

同样地,在试图找到中间值时,您要求解释器对“这个2D数组比另一个2D数组大吗?”进行一系列比较。翻译回答说:“你说的‘更大’是什么意思?我不知道如何比较两个这样物体的绝对大小。”

如果使用的是三维阵列,则可以指定要沿哪个轴居中(或不指定任何内容,在这种情况下,numpy将计算展平阵列的居中值并给出该值):


然后,您可以询问中位数,指定axis=None、0、1或2,具体取决于您的需要。

我明白了,谢谢您的回答。因此,在我的代码中,我使用for循环在几个文件上循环。最好的方法是每次迭代都在列表中附加几个屏蔽数组,然后在numpy数组中转换列表?如果我能在你的代码中添加一些东西,如果我有一些标志是真的,放置np.array将完全破坏
ma.masked_数组
带来的标志,因此为了进行计算,我们必须通过将
np.array
替换为:
ma.array(您的_列表)
来连接整个列表。如果我们想计算中位数:
ma.median(ma.array(您的_列表),axis=0)
。沿着你感兴趣的轴线。
import numpy as np
import numpy.mask as ma


test = ma.masked_array([[1,2,3,4],[5,6,7,8]], mask = [[False,False,False,False],[False,False,False,False]])

test_tot= np.array([test,test,test,test])