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

Python TypeError:列表索引应为整数/切片而非列表(numpy数组重组场景)

问题:按数组第二列值排序列表中的NumPy数组

我有一个包含不同形状NumPy数组的列表Ii0,想要根据数组第二列(j值)递增的顺序重新排列每个数组,但运行代码时出现错误。

原代码

import numpy as np
Ii0 = [np.array([[0, 1],[0, 2],[1, 3],[2, 4],[4,3]]),
       np.array([[0, 1],[0, 2],[1, 3],[2, 5],[4,3],[3,4]])]

order = [k[:,1].argsort() for k in Ii0]
print(order)
Ii01 = Ii0[order]
print("Ii01 =",[Ii01])

报错信息

in <module>
    Ii01 = Ii0[order]

TypeError: list indices must be integers or slices, not list

错误原因

Ii0是Python普通列表,不能直接用另一个列表order作为索引。order中的每个元素是对应Ii0里数组的排序索引数组,需要逐个对每个数组应用索引。

修正后的代码

import numpy as np
Ii0 = [np.array([[0, 1],[0, 2],[1, 3],[2, 4],[4,3]]),
       np.array([[0, 1],[0, 2],[1, 3],[2, 5],[4,3],[3,4]])]

# 生成每个数组按第二列排序的索引数组
order = [k[:,1].argsort() for k in Ii0]
# 逐个对数组应用排序索引
Ii01 = [k[o] for k, o in zip(Ii0, order)]
print("Ii01 =", Ii01)

预期输出

[array([[0, 1],[0, 2],[1, 3],[4,3],[2, 4]]),
 array([[0, 1],[0, 2],[1, 3],[4,3],[3,4],[2, 5]])]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:36:08