假设我有以下两个掩码数组声明:
arr1 = ma.array([(1,2,"hello"),(10,20,"world!")],dtype=[("p1",int),("p2",float),("p3",object)])
arr1.mask["p1"][0] = True
arr1.mask["p2"][1] = True
arr2 = ma.array([(1,2,3),(10,20,30)],dtype=[("p1",int),("p2",float),("p3",int)])
arr2.mask["p1"][0] = True
arr2.mask["p2"][1] = True
正如您所看到的,唯一(轻微的?)区别是“p3”字段是一个对象 forarr1
和一个 int for arr2
。
呼叫arr2[0]
是好的并且给(--, 2.0, 3)
。
但是,当屏蔽 的某些元素时arr1
,调用arr1[0]
会出现以下错误:
*** ValueError: Setting void-array with object members using buffer.
显然,将一个字段声明为对象会引发一些麻烦,但我不知道为什么。
您对此有何看法,您是否会看到一些规避该问题的方法,请记住,我确实需要以这种方式访问“arr1 [0]”?
多谢
埃里克
编辑:这个问题发生在 numpy 版本 < 1.8。我试过最新版本(1.8),没问题。