我很难理解numpy蒙面数组的行为。
以下是让我感到困惑的片段:
arr = numpy.ma.array([(1,2),(3,4)],dtype=[("toto","int"),("titi","int")])
arr[0][0] = numpy.ma.masked
[0][0]
[[1,2],[3,4]]
(而不是[(1,2),(3,4)]
),我收到以下错误:
TypeError: expected a readable buffer object
似乎我完全误解了如何设置(和使用)蒙面数组。
你能告诉我这段代码有什么问题吗?
感谢
编辑:没有指定dtypes,它就像预期的那样工作
答案 0 :(得分:1)
屏蔽数组的目的是告诉任何操作,即数组的某些元素无效,即被屏蔽。
例如,你有一个数组:
a = np.array([[2, 1000], [3, 1000]])
并且您希望忽略元素>100
的所有操作。您创建一个蒙版数组,如:
b = np.ma.array(a, mask=(a>100))
您可以在两个阵列中执行某些操作以查看差异:
a.sum()
# 2005
b.sum()
# 5
a.prod()
# 6000000
b.prod()
# 6
如您所见,蒙面项目会被忽略......