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

使用嵌套循环为Numpy矩阵赋值仅第一行生效,求排查与解决方法

问题原因

你的代码只给第一行赋值,核心问题是变量j只在最开始初始化了一次。第一次外层循环(i=0)执行完内层while后,j的值已经变成3,后续外层循环(i=1、i=2)时,内层while的条件j<3直接不成立,根本不会执行赋值操作。

修正后的循环代码

把j的初始化放到外层循环里面,每次进入新的一行时重置j为0:

import numpy as np
u = np.zeros((3,3))
i = 0
while i < 3:
    j = 0  # 每次外层循环开始时重置j
    while j < 3:
        u[i,j] = i + j
        j += 1
    i += 1

运行后得到的完整矩阵:

array([[0., 1., 2.],
       [1., 2., 3.],
       [2., 3., 4.]])
更高效的Numpy矢量化写法

用Numpy不需要嵌套循环,直接利用广播机制生成矩阵,效率远高于循环:

import numpy as np
# 方法1:利用数组广播
i = np.arange(3)
j = np.arange(3)
u = i[:, np.newaxis] + j

# 方法2:用outer函数更简洁
u = np.add.outer(np.arange(3), np.arange(3))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:24:59