【发布时间】:2011-03-01 00:38:08
【问题描述】:
我想继承 numpy ndarray。但是,我无法更改数组。为什么self = ... 不改变数组?谢谢。
import numpy as np
class Data(np.ndarray):
def __new__(cls, inputarr):
obj = np.asarray(inputarr).view(cls)
return obj
def remove_some(self, t):
test_cols, test_vals = zip(*t)
test_cols = self[list(test_cols)]
test_vals = np.array(test_vals, test_cols.dtype)
self = self[test_cols != test_vals] # Is this part correct?
print len(self) # correct result
z = np.array([(1,2,3), (4,5,6), (7,8,9)],
dtype=[('a', int), ('b', int), ('c', int)])
d = Data(z)
d.remove_some([('a',4)])
print len(d) # output the same size as original. Why?
【问题讨论】:
-
请提供您的预期输出,目前尚不清楚您想要实现什么。
-
我想从 Data 实例中删除行。
-
好的,你可以使用掩码,但如果你问另一个问题更好,因为这与子类化 ndarray 没有太大关系
-
[已发布另一个问题][1] 在子类化
ndarray时遇到同样的问题。 [1]:stackoverflow.com/questions/16049437/…
标签: python numpy subclass recarray