numpy - 使用布尔 numpy 数组来索引列表?
问题描述
谁能告诉我我做错了什么?我从布尔数组创建了一个整数数组,但仍然不能将它用作列表的索引:
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]]
解决方案
这种魔法只适用于 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]]
....
推荐阅读
- python - 尝试使用 mechanize 打开网页时出错
- ios - 检查一个地理位置是否属于两个地理位置
- r - 使用 Rselenium 抓取多个 url
- ruby-on-rails - 如何在 Rails 中进行 Shopify GraphQL 查询而不会出现内存问题
- sql - 如何创建数据源并从 R 连接它?
- azure-ad-b2c - 如果存在声明不起作用,则跳过自我断言的编排步骤
- slider - PySimpleGUI 滑块是否有小数范围?
- openxml - 通过 OpenXml SDK 的 XLSX 文件有效和无效
- r - geom_label_repel 和 geom_label 的错误图例
- javascript - 如何为每个用户读取和写入 firestore 中的字段?