【发布时间】:2021-05-08 19:57:02
【问题描述】:
我有不同大小的矩阵,我尝试在每次迭代中增加每一行的值。
我设法增加了每一行的值,但是当迭代移动到下一个矩阵时,它只会增加前一个矩阵第一行的值 我需要它从矩阵的最后一行开始
有没有办法把前一个矩阵的最后一次迭代保存下来,在下一个矩阵中继续迭代?
这是我迭代数组的代码部分
c1=c1 + 10 * (np.arange(c1.shape[1]) + 1)*p
p +=1
我的结果
#first iteration
11 12 13
21 22 23
#second iteration
21 22 23
41 42 43
61 62 63
#third iteration
31 32 33
61 62 63
我需要
11 12 13
21 22 23
31 32 33
41 42 43
51 52 53
61 62 63
71 72 63
这是我从文本文件中读取输入的完整代码
demofile.txt
>=2 1 2 3
>=3 1 2 3
>=2 1 2 3
完整代码
import os
import sys
import numpy as np
import re
f = open("demofile.txt", "r")
lines = f.readlines()
p=1
#sys.stdout = open("results.txt", "w")
for i in list(lines):
if i[0] != '<' and i[0] != '>' and i[0] != '=':# change txt file for np.array
p = str(' '.join(i.split()))
print(p)
else:
w = i[3:]
frst=i[2]
w = ', '.join(w.split())
y = i[2]
y=int(y)+1
#INSERT input to array
c=np.array([w])
c1 = [int(i) for i in c[0].replace(" ", "").split(",")]
frst=str(frst).replace("[",'')
frst=str(frst).replace("]",'')
frst=int(frst)
c1=np.array(c1)
sest2=c1
c1=np.array([c1]*frst) #frst is the first value by which the matrix is multiplied
c1=np.transpose(c1)#transpose
#change value every iteration
c1=c1 + 10 * (np.arange(c1.shape[1]) + 1)*p
left=c1*-1
sedem=np.transpose(left)*-1 #transpose matrix
p +=1
#editing outputs
sedem=str(sedem).replace("[",'')
sedem=str(sedem).replace("]",' 0')
sedem=str(sedem).replace(".",'')
sedem = sedem[:-1]
sedem=str(sedem).replace("\n ",'\n')
sedem=str(sedem).replace(" ",' ')
sedem=str(sedem).replace("\n ",'\n')
sedem=str(sedem).lstrip()
print(sedem,'\n')
【问题讨论】:
-
你的输入数组是什么?
-
输入数组是 c1,它从 demophile 中获取每行的最后三个数字,并迭代地遍历每一行。在这种情况下,第一个数组是 c1 = np.array ([1,2,3])。这乘以 demofile.txt 中的第一个目标来调整数组的大小
-
你的输出应该是一个二维数组吗?
-
对于二维数组的每次迭代,因为它在所需的输出中
标签: python arrays numpy for-loop