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

如何创建每行按序数排列的100×100 NumPy矩阵?

解决方案

要生成每行以连续序数循环排列的100×100矩阵,无需用for循环复制再排序,这里提供两种高效的numpy实现方法:

方法一:利用循环移位(np.roll)

先创建1-100的基础数组,再对每行执行循环左移操作:

import numpy as np

# 生成目标矩阵
matrix = np.array([np.roll(np.arange(1, 101), -i) for i in range(100)])
  • 原理:np.roll(arr, shift)会对数组做循环移位,负shift代表向左移。第i行(从0开始计数)左移i位后,恰好以i+1开头,末尾自动补上1到i的数值,完全匹配需求。

方法二:广播机制(无循环,更高效)

通过行列索引的广播计算每个位置的数值,适合大矩阵场景:

import numpy as np

# 构造行索引(100x1)和列索引(1x100)
row_idx = np.arange(100)[:, np.newaxis]
col_idx = np.arange(100)

# 直接计算每个位置的数值
matrix = (row_idx + col_idx) % 100 + 1
  • 原理:对第i行第j列(均从0开始计数),数值可通过(i+j) % 100 + 1得到,正好实现每行从i+1开始连续排列到100,再从1续接到i的效果。
你原有代码的问题

np.argsort(x)完全不是生成目标矩阵的正确方式:

  • np.argsort的作用是返回数组元素排序后的原始索引,而非生成新的数值排列。
  • 你的x是100行每行都是1-100的数组,每行排序后的索引都是0到99,因此得到的y是100×100的索引矩阵(索引从0开始,所以会出现0),和你要的目标矩阵毫无关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:05:17