首先我是python和编程的新手,但你们已经帮了我很多,所以非常感谢!但是我遇到了一个问题,到目前为止我还没有找到答案:
我有几个平板的数据,其中数据代表每个平板上大量不同点的压力。问题是,由于传感器测量压力,这些板不是完美的圆形,有时这些传感器甚至会产生错误,所以我在板内的某个位置没有任何数据。
当我只需要绘制一个盘子时,我会这样做:
import numpy.ma as ma
matrix=ma.masked_all((160,65),float)
for x in range(len(plate.X)):
matrix[(plate.Y[x],plate.X[x])]=data.index(plate.measurementname[x])
image.pcolormesh(matrix,min,max)
这很好用。现在我有几个板块,我想绘制每个点的平均压力。因为我不知道任何平均功能,我想把所有的盘子加在一起并除以盘子的数量......我试着跟着:
import numpy.ma as ma
meanmatrix=ma.masked_all((160,65),float)
for plate in plateslist:
matrix=ma.masked_all((160,65),float)
for x in range(len(plate.X)):
matrix[(plate.Y[x],plate.X[x])]=data.index(plate.measurementname[x])
meanmatrix+=matrix
meanmatrix=meanmatrix/len(plateslist)
image.pcolormesh(meanmatrix,min,max)
这很好用,但有一个问题我无法解决。正如我所说,有时一些板块没有得到所有数据,因此在图中的某些位置有一个“洞”。现在我的meanmatrix有一个整体,其中一个板块有一个整体,即使所有其他人都有那个位置的数据。
我怎样才能确保我不会得到这些漏洞,或者是否有更平滑的方式来获取我的“平均矩阵”? (我希望我的问题很清楚......)
编辑:
问题不在于我没有得到数据的意思,这实际上是有效的(我不喜欢我是怎么做的但是它有效),问题是我得到了这些“漏洞”我描述之前。这就是困扰我的。
答案 0 :(得分:1)
allplates = ma.masked_all((160, 65, numplates))
# fill in allplates
meanplate = allplates.mean(axis=2)
这将计算阵列最后一维的平均值,即将板平均在一起。遗漏的值将被忽略。
早期回答:你可以采用蒙面数组的平均值,它会忽略缺失值:
>>> X = ma.masked_all((160, 65))
>>> X.mean()
masked
>>> X[0, 0] = 1
>>> X.mean()
1.0
尽量避免使用matrix
作为变量名,因为它也引用了NumPy数据结构。
答案 1 :(得分:0)
好的,我得到了答案:
import numpy.ma as ma
allplats=ma.masked_all((160,65),float)
for plate in plateslist:
for x in range(len(plate.X)):
allplates[(plate.Y[x],plate.X[x])]+=data.index(plate.measurementname[x])
allplates=allplates/len(plateslist)
image.pcolormesh(meanmatrix,min,max)
这实际上有效!所以我想在添加两个masked_all数组时出现了错误...(“Stupid就像愚蠢一样”) 如果有人有更好的方法来获得每个单位的所有板块的平均值,那么阅读它会很好。