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

使用Numpy生成指定规则(10,10)二维数组遇错误求助

问题:创建指定规则的(10,10)二维数组

需创建形状为(10,10)的二维数组,要求如下:

  • 数组左上角array[0,0] = 1、右上角array[0,9] = 100、左下角array[9,0] = 50
  • 元素按预期输出呈现等间隔递增:每行从左到右以步长11递增,直到达到该行有效元素上限;每列从上到下按特定间隔递增,首列元素依次为1、6、11、17、22、28、33、39、44、50
  • 超出有效元素范围的位置补0

当前编写的代码中,列表推导逻辑存在错误,无法得到预期的(10,10)数组。

用户编写的代码

import numpy as np
matrix_list = np.zeros((10,10), dtype = int)
matrix_list = [(np.arange(column, 101, (100-1)/9).astype(int)) for column in np.arange(1, 51, (50-1)/9).astype(int)]
print(np.array(matrix_list))

预期输出

[ 1, 12, 23, 34, 45, 56, 67, 78, 89, 100]
[ 6, 17, 28, 39, 50, 61, 72, 83, 94,   0]
[11, 22, 33, 44, 55, 66, 77, 88,  0,   0]
[17, 28, 39, 50, 61, 72, 83,  0,  0,   0]
[22, 33, 44, 55, 66, 77,  0,  0,  0,   0]
[28, 39, 50, 61, 72,  0,  0,  0,  0,   0]
[33, 44, 55, 66,  0,  0,  0,  0,  0,   0]
[39, 50, 61,  0,  0,  0,  0,  0,  0,   0]
[44, 55,  0,  0,  0,  0,  0,  0,  0,   0]
[50,  0,  0,  0,  0,  0,  0,  0,  0,   0]

实际输出

[array([  1,  12,  23,  34,  45,  56,  67,  78,  89, 100])
 array([ 6, 17, 28, 39, 50, 61, 72, 83, 94])
 array([11, 22, 33, 44, 55, 66, 77, 88, 99])
 array([17, 28, 39, 50, 61, 72, 83, 94])
 array([22, 33, 44, 55, 66, 77, 88, 99])
 array([28, 39, 50, 61, 72, 83, 94]) array([33, 44, 55, 66, 77, 88, 99])
 array([39, 50, 61, 72, 83, 94]) array([44, 55, 66, 77, 88, 99])
 array([50, 61, 72, 83, 94])]

问题分析

  1. 覆盖初始数组:代码一开始创建了(10,10)的全0数组,但随后用列表推导直接覆盖了这个变量,完全没利用初始数组来补0。
  2. 行长度不一致:np.arange(column, 101, 11)生成的数组长度随首元素变化,导致各行元素数量不同,转成numpy数组后变成了object类型的不规则数组,不是预期的(10,10)二维数组。
  3. 有效元素数量错误:预期每行的有效元素数量为10 - 行索引(第0行10个,第1行9个,...第9行1个),但当前代码是按元素不超过100来生成,导致部分行的元素数量不符合要求。

修正后的代码

import numpy as np

# 初始化(10,10)全0数组
matrix = np.zeros((10, 10), dtype=int)
# 首列的目标值
first_column = [1, 6, 11, 17, 22, 28, 33, 39, 44, 50]
# 行内递增步长
row_step = 11

for i in range(10):
    # 每行有效元素个数:10 - i
    valid_count = 10 - i
    # 生成该行的有效元素
    row_elements = [first_column[i] + row_step * j for j in range(valid_count)]
    # 赋值到数组的对应行
    matrix[i, :valid_count] = row_elements

print(matrix)

输出验证

运行修正后的代码,输出与预期完全一致:

[[  1  12  23  34  45  56  67  78  89 100]
 [  6  17  28  39  50  61  72  83  94   0]
 [ 11  22  33  44  55  66  77  88   0   0]
 [ 17  28  39  50  61  72  83   0   0   0]
 [ 22  33  44  55  66  77   0   0   0   0]
 [ 28  39  50  61  72   0   0   0   0   0]
 [ 33  44  55  66   0   0   0   0   0   0]
 [ 39  50  61   0   0   0   0   0   0   0]
 [ 44  55   0   0   0   0   0   0   0   0]
 [ 50   0   0   0   0   0   0   0   0   0]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:10:31