You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用numpy.where查找二维数组索引时遭遇TypeError问题求助

问题解决:二维列表中查找第一列等于0.1的元素索引

错误原因

你定义的Data是Python原生列表,不是numpy数组,[:,0]是numpy专属的切片语法,原生列表不支持这种元组形式的索引,所以会抛出TypeError: list indices must be integers or slices, not tuple错误。

两种解决方法

方法一:转成numpy数组处理

先把原生列表转换成numpy数组,就能正常使用numpy的索引和np.where函数了:

import numpy as np
Data = [[0, 1], [0.075, 1], [0.1, 1], [0.11, 1], [0.125, 1]]
# 转换成numpy数组
np_data = np.array(Data)
# 查找第一列等于0.1的索引
print(np.where(np_data[:, 0] == 0.1))

注意:浮点数存在精度问题,如果0.1是计算生成的,建议用np.isclose替代==,避免因精度误差找不到结果:

print(np.where(np.isclose(np_data[:, 0], 0.1)))

方法二:纯Python列表处理(无需numpy)

如果不想依赖numpy,直接用列表推导式+enumerate遍历即可:

Data = [[0, 1], [0.075, 1], [0.1, 1], [0.11, 1], [0.125, 1]]
# 收集符合条件的索引
indices = [i for i, row in enumerate(Data) if row[0] == 0.1]
print(indices)

同样,考虑浮点数精度的话,可以改成:

indices = [i for i, row in enumerate(Data) if abs(row[0] - 0.1) < 1e-9]

内容的提问来源于stack exchange,提问作者vinc00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:10:27