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

Python中Numpy数组[][]与[,]索引的差异及排序结果不同的原因

为什么numpy双括号[][]和单括号[,]索引排序结果不同

先明确关键前提

sampleArray[1,:].argsort()的结果是[2,1,0]——第二行[82,22,12]从小到大排序后,对应原元素的索引顺序是2(对应12)、1(对应22)、0(对应82)。

两种索引的本质差异

  • 双括号[][]是两次独立索引:
    sampleArray[:][sampleArray[1,:].argsort()]等价于先执行sampleArray[:](返回原数组的完整视图,和原数组完全一致),再对这个结果做行索引[[2,1,0]],也就是取原数组的第2行、第1行、第0行。最终得到的是行的重新排列,和“按第二行排序列”的需求完全不沾边。

  • 单括号[,]是一次多维索引:
    sampleArray[:,sampleArray[1,:].argsort()]是numpy的多维索引语法,逗号前的:表示保留所有行,逗号后的[2,1,0]表示按这个顺序重新排列列。也就是把原数组的列,按照第二行元素从小到大的顺序重新排布,这才是你想要的“按第二行对数组列排序”的效果。

实际输出验证

  • n1的输出(行倒序):
    [[53 94 66]
     [82 22 12]
     [34 43 73]]
    
  • n2的输出(按第二行排序列):
    [[73 43 34]
     [12 22 82]
     [66 94 53]]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:03:19