现在我正在尝试使用双循环制作两维数组。
在我的代码中:
for t in range(0,150):
for z in range(0,279):
QC1 = QC[t,z,:,:]
SUMQ =1000*np.mean(QC1)
QRAIN1.append(SUMQ)
print len(QRAIN1)
QRAIN.append(QRAIN1)
QR = np.array(QRAIN)
我想制作150X279阵列,但结果不是,因为我认为在第一次循环运行的每一次,结果都附加在QRAIN1中。
我想将259个数字列表的每个循环运行分开并将它们累积到QRAIN产生的150x279数组。
任何帮助或想法都会非常感激。
谢谢,
艾萨克
答案 0 :(得分:2)
每次循环时只需创建一个新的空列表:
for t in range(0,150):
QRAIN1 = []
for z in range(0,279):
QC1 = QC[t,z,:,:]
SUMQ =1000*np.mean(QC1)
QRAIN1.append(SUMQ)
print len(QRAIN1)
QRAIN.append(QRAIN1)
QR = np.array(QRAIN)
顺便说一句,每当你发现自己从空列表开始然后在for
循环中追加它时,请考虑列表理解的时尚替代方案:
for t in range(150):
QRAIN1 = [1000*np.mean(QC[t,z,:,:]) for z in range(279)]
print len(QRAIN1)
QRAIN.append(QRAIN1)
QR = np.array(QRAIN)
我还删除0,
来电中的多余range
- 再次只是风格问题,但我喜欢Tufte的原则,"没有浪费像素": - )
当然你也可以使用嵌套列表理解来构建所有QRAIN
,但我知道这开始有点紧张,而且&# 34;中途"一个listcomp里面,一个for
循环外部,可能被认为更具可读性。无论如何,以防你想尝试......:
QRAIN = [ [1000*np.mean(QC[t,z,:,:]) for z in range(279)]
for t in range(150) ]
QR = np.array(QRAIN)
这个没有print
但我怀疑你只是用它们作为调试辅助工具,所以他们的损失不应该是一个大问题,我希望:-)。