请参见下面的简化代码
import numpy as np u=np.zeros((3,3)) i,j=0,0 while i<3: while j<3: u[i,j]=i+j j=j+1 i=i+1
字符串我期待一个完整的矩阵u(除了[0,0]元素)。此代码似乎只分配给u的第一行。我过去在MATLAB中成功地使用过类似的东西
yrefmtwq1#
主要的问题是,当内部循环完成时,您忘记重置索引j。在第一行之后,j将大于3,因此u[i, j]将没有意义。正确的代码是:
j
u[i, j]
import numpy as np u=np.zeros((3,3)) i=0 while i<3: j=0 while j<3: u[i,j]=i+j j=j+1 i=i+1
字符串这应该可以解决您的问题并将u初始化为以下数组:
u
[[0. 1. 2.] [1. 2. 3.] [2. 3. 4.]]
型请注意,尽管代码是正确的,但可以使用for循环和范围重写它以使其更清晰:
import numpy as np u = np.zeros((3, 3)) for i in range(3): for j in range(3): u[i, j] = i+j
型
evrscar22#
这是因为在进入第二个循环之前没有重置j。第一次内循环完成时,我们有j=3,因此在第一次之后我们永远不会进入内循环。要修复,只需在进入第二个循环之前添加j=0即可。
j=3
j=0
2条答案
按热度按时间yrefmtwq1#
主要的问题是,当内部循环完成时,您忘记重置索引
j
。在第一行之后,j将大于3,因此u[i, j]
将没有意义。正确的代码是:字符串
这应该可以解决您的问题并将
u
初始化为以下数组:型
请注意,尽管代码是正确的,但可以使用for循环和范围重写它以使其更清晰:
型
evrscar22#
这是因为在进入第二个循环之前没有重置
j
。第一次内循环完成时,我们有j=3
,因此在第一次之后我们永远不会进入内循环。要修复,只需在进入第二个循环之前添加j=0
即可。