1

我很难理解 numpy 掩码数组的行为。

这是让我感到困惑的片段,原因有两个:

arr = numpy.ma.array([(1,2),(3,4)],dtype=[("toto","int"),("titi","int")])
arr[0][0] = numpy.ma.masked
  1. 这样做时没有任何反应,元素上没有应用掩码[0][0]
  2. 将数据更改为[[1,2],[3,4]](而不是[(1,2),(3,4)]),我收到以下错误: TypeError: expected a readable buffer object

似乎我完全误解了如何设置(和使用)掩码数组。

你能告诉我这段代码有什么问题吗?

谢谢

编辑:不指定 dtypes,它像预期的那样工作

4

1 回答 1

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

如您所见,蒙面项目被忽略...

于 2013-10-30T18:29:42.693 回答