我遇到了 numpy.random.shuffle 函数的奇怪行为。我向实例添加了属性,但在改组后它被删除了。
这是说明问题的代码:
#I'm making a class of time series.
class TimeSeries(object):
def __init__(self, data):
self.data = data
self.num_points = len(self.data)
def __getitem__(self, key):
return self.data[key]
def __len__(self):
return self.num_points
dataset = [TimeSeries(numpy.random.random((10,3))) for _ in range(100)]
#Add new attribute
for ts in dataset:
ts.weight = 1
dataset[0].weight #returns 1
numpy.random.shuffle(dataset)
dataset[0].weight #'numpy.ndarray' object has no attribute 'weight'
我想保留 weight 属性,但在洗牌后删除。我做了一些试验。我发现的是:
- 如果数据集很小,问题就不会发生。(例如范围(100)>>范围(3))
- 洗牌后ID会发生变化。
- 如果 getitem, len 方法没有实现,问题就不会发生。
随机播放功能发生了什么?这是一个错误吗?我使用该功能是错误的方式吗?