python - numpy 相当于 list.index
问题描述
在 Python 中,我可以使用list.index
来查找元素的索引,例如[1,2,3,4].index(1)
返回0
,因为元素1
出现在 position 处0
。我想用多维数组来做到这一点。也就是说,我希望能够写出类似的东西
x = np.array([[0, 1, 2],
[3, 4, 5]])
y = np.array([0, 1, 2])
print(x.index(y))
输出应该是0
,因为目标元素再次位于第一个位置。
使用内置list.index
方法不起作用,因为==
numpy 数组的运算符返回一个数组而不是布尔值。并且np.argwhere
不做任何广播。我知道我总能做到
idx = 0
while idx < x.shape[0] and (x[idx] != y).any():
idx += 1
print(idx)
但这感觉太笨拙了!
解决方案
有几种方法。按照此示例(在 2 维 numpy 数组中查找匹配行):
>>> np.where((x == y).all(axis=1))
(array([0]),)
推荐阅读
- python - MLFLow:通过 pip 和 1 个构建作业安装 github-package 依赖项
- class - OOP 避免不必要的重复调用
- sql - 如何根据 SQL 中一列的值创建多行?
- python - 如何转换这个dict输出?
- postgresql - 有没有办法在 Postgres 中记录相关 ID(从微服务发送)
- pyqt5 - Pyqt 单元测试
- python - 带有子查询的sqlalchemy func
- c# - 如何使命令绑定到 ListView 中的 CheckBox?
- vba - VBA Acrobat 库初始化
- c# - Automapper:如何将对象列表扁平化为单个对象