也许使它成为一个函数,而不是一个方法:
import numpy as npdef remove_row(arr,col,val): return arr[arr[col]!=val]z = np.array([(1,2,3), (4,5,6), (7,8,9)], dtype=[('a', int), ('b', int), ('c', int)])z=remove_row(z,'a',4)print(repr(z))# array([(1, 2, 3), (7, 8, 9)], # dtype=[('a', '<i4'), ('b', '<i4'), ('c', '<i4')])或者,如果您希望将其用作方法,
import numpy as npclass Data(np.ndarray): def __new__(cls, inputarr): obj = np.asarray(inputarr).view(cls) return obj def remove_some(self, col, val): return self[self[col] != val]z = np.array([(1,2,3), (4,5,6), (7,8,9)], dtype=[('a', int), ('b', int), ('c', int)])d = Data(z)d = d.remove_some('a', 4)print(d)此处的主要区别在于,
remove_some它不尝试修改
self,而仅返回的新实例
Data。



