我想更好地理解课程。假设我有一个处理数据修改的类,例如复制数据和重新采样数据。在我的情况下,函数resample
需要函数duplicate
,因为我想修改原始数据的副本而不是原始数据本身。
我已经看到类似的问题addressed here,但我无法将这些解决方案应用于我的案例。我想知道@classmethod
是否需要import numpy as np
import random
class DataMods():
def __init__(self, data):
self.data = data
def duplicate(self):
if isinstance(self.data, np.ndarray):
res = np.copy(self.data)
else:
res = self.data[:]
return res
def resample(self, nshuffles=0, struct=np.array):
# resample copy of data instead of data
data_dup = self.duplicate(self.data) # this is the problematic line
size = len(data_dup)
if isinstance(nshuffles, int):
if nshuffles > 1:
for idx in range(nshuffles - 1):
res = struct(random.sample(list(data_dup), size))
else:
raise ValueError("nshuffles ...")
return struct(random.sample(list(res), size))
aa = np.array([1, 2, 3, 4, 5])
a2 = DataMods(data=aa).resample(nshuffles=5)
print(a2)
>> TypeError: duplicate() takes 1 positional argument but 2 were given
之类的内容。
data_dup = self.duplicate(data)
如果我将有问题的行更改为:
NameError: name 'data' is not defined
然后我得到一个不同的错误:
-import
我尝试了一些不同的变体,但都没有成功。我没有正确理解的是什么?