谁能告诉我我做错了什么? 我从一个布尔数组创建了一个整数数组,但仍然不能将其用作列表的索引:
dataset = []
dataset.append({
"a": "few",
"b": "cd"
})
dataset.append({
"a": "fe",
"b": "c"
})
dataset.append({
"a": "f",
"b": "cwef"
})
split = 0.5
# generate bolean mask
msk = np.random.rand(len(dataset)) < split
print(msk)
# transform mask to int version
msk = np.where(msk)
print(msk)
# take only first part of touple as index mask
# ERROR: only integer scalar arrays can be converted to a scalar index
dataset_low = dataset[msk[0]]
dataset_high = dataset[~msk[0]]
答案 0 :(得分:0)
该魔术仅适用于numpy数组,dataset
是一个列表。
您可以将其转换为具有自定义数据类型的numpy数组。
并且仅在不使用np.where
并坚持使用布尔数组的情况下才有效。
将~
的结果取反np.where
没有意义,因为结果是索引,而不是布尔值。
...
#msk = np.where(msk)
...
dataset = np.array(dataset)
dataset_low = dataset[msk[0]]
dataset_high = dataset[~msk[0]]
....