2
我正在嘗試創建一個numpy.ndarray子類,它具有不同的屬性和更多的功能,這些屬性在我的應用程序中是必需的。 我仍然很難分配數據類型。具有新屬性的numpy.ndarray子類
class Vector(np.ndarray):
def __new__(cls, value, *args, **kwargs):
return np.asarray(value).view(cls)
def __init__(self, value, type=float):
self.set_type(type)
def set_type(self, type):
assert type in (int, float, complex, str), "type can only be int, float, complex or str, %r is given"%type
self.astype(type, copy=False)
這表明該類型沒有變化
a = Vector([1,2,3], type=str)
print a, a.dtype, a.type
>> [1 2 3] int32 <type 'str'>
'astype'不會更改對象的內部類型。它會返回所需類型的副本。 –
「ndarray」子類是一個無法逃脫的兔子洞。 OTOH,如果你*不*子類,那麼很多numpy函數分支的對象是否是'ndarray'將不會有相同的方式。結論:草莓奶昔反而! – DSM
不要沉迷於讓你的代碼適合四人幫的設計模式。只要讓你的班級成爲'ndarray'的成員,並轉向有趣的問題。 – Cuadue