如何用for循环和while循环填充np.zeros全零矩阵为A(x,y)=x+y?
前置初始化
你写的A = np.zeros(m,m)存在参数错误:np.zeros()的第一个参数为数组形状,需要传入元组类型,正确初始化代码如下:
import numpy as np m = 6 # 指定dtype=int生成整数型数组,避免默认浮点数带来的`.0`后缀 A = np.zeros((m, m), dtype=int)
for循环实现方案
通过两层for循环分别遍历行、列索引,逐位置按规则赋值即可:
for x in range(m): for y in range(m): A[x, y] = x + y
逻辑说明:
- 外层
for x in range(m)会依次取0到5的所有行序号 - 内层循环遍历当前行下0到5的所有列序号,直接给
A[x,y]赋值为x与y的和
while循环实现方案
while循环需要手动维护索引计数器,注意:不要遗漏索引自增逻辑,否则会陷入无限循环,实现代码如下:
# 初始化行索引起始值 x = 0 while x < m: # 每进入新的一行,重置列索引起始值为0 y = 0 while y < m: A[x, y] = x + y # 列索引自增,移动到当前行下一列 y += 1 # 当前行所有列遍历完成,行索引自增,移动到下一行 x += 1
结果验证
两种循环执行后得到的数组完全一致,执行print(A)可得到如下输出,完全符合A(x,y)=x+y的规则:
[[ 0 1 2 3 4 5] [ 1 2 3 4 5 6] [ 2 3 4 5 6 7] [ 3 4 5 6 7 8] [ 4 5 6 7 8 9] [ 5 6 7 8 9 10]]
内容的提问来源于stack exchange,提问作者kantditlaverite
相关产品推荐
相关产品推荐

