python - numpy数组中多个元素的索引
问题描述
我有一个numpy数组和一个列表如下
y=np.array([[1],[2],[1],[3],[1],[3],[2],[2]])
x=[1,2,3]
我想返回一个数组元组,每个数组都包含 yie 中 x 的每个元素的索引
(array([[0,2,4]]),array([[1,6,7]]),array([[3,5]]))
这是否可以以矢量化方式完成(没有任何循环)?
解决方案
一种解决方案是map
y = y.reshape(1,len(y))
map(lambda k: np.where(y==k)[-1], x)
[array([0, 2, 4]),
array([1, 6, 7]),
array([3, 5])]
合理的表现。对于 100000 行,
%timeit list(map(lambda k: np.where(y==k), x))
3.1 ms ± 113 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
推荐阅读
- shell - Unix Jobs 命令未列出后台作业
- arrays - 访问对象数组中的特定对象属性时返回对象承诺?(角度 - 离子)
- firebase - 颤振错误:类型“_Uri”不是“字符串”类型的子类型
- python - 在 pandas agg 中的列列表中共享/百分比
- reactjs - 使用 afterFit 函数 Chart.js 3 增加图形和标签之间的空间时出现问题
- php - 仅显示一位用户的帖子
- python - 使用 obd2 elm327 和 pygame 制作数字仪表板,但是当将 obd2 放入代码中时屏幕是黑色的 obd 可以自行工作
- javascript - 调用 resizeImage() 后如何在 transformFile() 中调用“done()”函数?
- c# - 如何在 SQL 表中使用 WHERE 子句在其为空时更新特定行的注释?
- flutter - Flutter/Dart - 在 Listview.Builder 中动态控制 CheckboxListTile