- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试子类化 numpy 的 MaskedArray
添加属性,但似乎无法获得正确的结果。
我开始关注 the example用于子类化 numpy.ndarray
,效果很好。
然后我尝试子类化 numpy.ma.MaskedArray
相反,如下所示:
import numpy as np
class MyMaskedArray(np.ma.MaskedArray):
def __new__(cls, input_array, info=None):
obj = np.asarray(input_array).view(cls)
obj.info = info
return obj
def __array_finalize__(self, obj):
if obj is None: return
self.info = getattr(obj, 'info', None)
super(MyMaskedArray, self).__array_finalize__(obj)
arr = np.arange(5)
obj = MyMaskedArray(arr, info='information')
print obj.info
print obj[1:].info
结果
information
None
我曾两次期待“信息”。
替换行 obj = np.asarray(input_array).view(cls)
与 obj = np.ma.MaskedArray(input_array).view(cls)
或 obj = np.ma.MaskedArray.__new__(cls, input_array)
没有解决那个问题(我是这样走的,因为我想在子类的 future 化身中将 *args
和 **kwargs
传递给 __new__
。)
请注意,我还必须添加对 MaskedArray.__array_finalize
的调用在我的子类中'__array_finalize__
,与 ndarray
的示例相反子类;如果我不这样做,_mask
找不到属性。
也许有人可以启发我:
如何获得 obj[1:].info
保持原来的obj.info
为什么 ndarray
不需要父类(super class)调用 __array_finalize__
,但是MaskedArray
确实(更多的是奖励问题)。
我想继承MaskedArray
而不是编写容器类,因为后者会失去一些 MaskedArray
带来的便利
(注意:这与 this question 不同,因为我已经“解决”了 __init__
/__new__
问题。)
最佳答案
为了让切片按照您的意愿工作,您可能需要重载 __getitem__
:
def __getitem__(self, item):
out = np.ma.MaskedArray.__getitem__(self, item)
out.info = self.info
return out
__setitem__
也是如此。
如果你的info
属性比较简单,比如在你的例子中,你可能想看看MaskedArray
的_optinfo
属性,这是为此目的而设计的:它只是一个字典,用于存储一些必须以某种方式保存的信息。这是一个例子:
class MyMaskedArray(np.ma.MaskedArray):
def __new__(cls, input_array, info=None):
obj = np.asarray(input_array).view(cls)
obj._optinfo['info'] = info
return obj
@property
def info(self):
return self._optinfo.get('info', None)
注意这里,.info
是一个只读属性,但是要让它可写很简单。
关于 __array_finalize__
我不确定我是否理解您的问题:ndarray
本身就是父类(super class)。 MaskedArray
是 ndarray
的子类,因此需要定义一个 __array_finalize__
方法来特别说明如何设置掩码(通过 _mask
参数)。检查这个link有关子类化的更多信息。
在您的示例中,您使用自己的 __array_finalize__
来设置您的 .info
属性。在这种情况下,您必须调用父方法 MaskedArray.__array_finalize__
,这是基本的 Python 子类化。请注意,如果您采用 _optinfo
方式,则不必显式定义 __array_finalize__
...
注意
__array_prepare__
和 __array_wrap__
方法实际上用于在应用函数之前准备 ndarray
子类的实例,并处理函数的结果关于python - 子类化 numpy.ma.MaskedArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564656/
选项1:ViewModelA ModelA 选项2:ViewModelA ModelA * ModelA仅通过ViewModelB更改其属性,而仅更改,因此在Option2中,它无需实现任何机制即
考虑到下表,我对显示数据有一种罕见的态度: mysql> describe materiales; +-----------+--------------+------+-----+---------
我有一些时间序列数据点,我喜欢对它们执行简单的移动平均方法。如果我使用“forecast”包中的函数“ma”,我会得到以下结果: library(forecast) x<-c(1,5,2,8,6,3,
我正在尝试使用 numpy.ma.corrcoef 在存在缺失数据的情况下计算相关性。 根据文档:除了处理缺失数据外,此函数与 numpy.corrcoef 的功能相同。有关详细信息和示例,请参阅 n
我有两个(车速)信号,它们应该由类似的“潜在”驱动因素组成,但具有不同的自相关结构。驱动程序信号在统计上非常糟糕,因此我没有尝试对它们进行建模。 我可以通过使用 AR(1) 残差对信号进行预白化来获得
我无法获取 numpy.ma处理我的数据。我确定我以前用过它来屏蔽空白值,但不知道如何使用。这是显示我遇到的问题的代码片段。 import numpy as np import numpy.ma as
我这里有一个程序可以输出一个句子中的回文数。不区分大小写并忽略逗号和句点,例如当回文恰好是句子中的最后一个单词时。 #include #include using namespace std; c
numpy.ma.masked_where 用于屏蔽单个值。还有用于屏蔽间隔的 numpy.ma.masked_inside。 但是我不太明白它应该如何工作。 I found this snippet
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我正在尝试子类化 numpy 的 MaskedArray添加属性,但似乎无法获得正确的结果。 我开始关注 the example用于子类化 numpy.ndarray ,效果很好。 然后我尝试子类化
我有一个页面,其中包含用于报告功能的图表和 map 菜单。然后,我选择了Highchart-Highmap库来达到上面的目的。图表功能运行良好,但是当我开发 map 功能时出现错误 TypeError
示例数据集(行是从一个更大的矩阵中随机提取的) import numpy as np test = [[np.nan, np.nan, 0.217, 0.562], [np.nan,
我注意到 numpy masked-array mean method可能不应该返回不同的类型: import numpy as np A = np.ma.masked_equal([1,1,0],
我正在使用 R 的预测包,并使用 ARIMA 函数创建了一个 MA(1) 模型。我绘制了时间序列本身($ma_model 的 x 变量)、模型本身($ma_model 的拟合变量)和残差(ma_mod
我正在尝试拍摄一个具有 h264 视频轨道和 dts-ma 音频轨道的视频,并生成一个 .m4v 文件: h264 视频轨道DTS-ma音轨AC-3 5.1音轨 我试图只复制视频和 dts-ma 音轨
我的印象是转储产生了我的 winDbg .dump /ma 不仅仅包含一个完整的转储 正在配置 WER解释 DumpType 0:自定义转储MINIDUMP_TYPE 的 CustomDumpFlag
我正在尝试编写一个子类 masked_array。到目前为止我得到的是: class gridded_array(ma.core.masked_array): def __init__(sel
我正在用 c++ 中的 openmp 做一个循环,以从 QVector 向 QMAP 中提供一些值,在某些计算机中它说“程序停止工作”,但在某些计算机中它可以工作。 我看到 Qmap 不是线程安全的,
所以我使用 numpy.ma.masked 方法在特定条件下绘制线条,但我想连接所有连续的线条。例如,使用此代码: import pylab as plt import numpy as np x =
我想从压缩的掩码数组和相应的掩码创建一个数组。用一个例子更容易解释这一点: >>> x=np.ma.array(np.arange(4).reshape((2,2)), mask = [[True,T
我是一名优秀的程序员,十分优秀!