我需要通过for循环在数组的每一行上添加数据。为此我想到了使用vstack。
但由于我有两种类型的数组(大小不同),我想定义列号,只列列号,因为我不知道我将拥有多少行。具有预定义NaN成员的数组,以便在:
之后具有这样的数组Array=
[ x , x , x , NaN,NaN] # in case size is 3
[ x, x , x , x , x] # in case size is 5
代码是:
Array=[]
forArray=[]
for line in searchlines:
Array=re.findall(r'[-+]?\d*\.\d+|\d+', line)
size=len(Array)
if size == 3:
[G,x,y]= Array
if size == 5:
[G,x,y,i,j]= Array
forArray=np.vstack((forArray,Array))
我试过了:
if size == 3:
[G,x,y, NaN, NaN]= Array
但是没有工作...........
答案 0 :(得分:0)
我无法弄清楚你想要做什么,但我会批评你的代码
Array=[] # bad name, especially when the value is a list
forArray=[]
for line in searchlines:
Array=re.findall(r'[-+]?\d*\.\d+|\d+', line)
# why did you intially set Array to []?
size=len(Array)
if size == 3:
[G,x,y]= Array
# so you are assigning the 3 values in Array to 3 variables
if size == 5:
[G,x,y,i,j]= Array
# and 5 variables
forArray=np.vstack((forArray,Array))
在最后一行,forArray
是一个空列表,Array
有3或5个值
np.vstack(([],[1,2,3]))
产生一个ValueError,因为这两个列表的长度不匹配。
为什么使用vstack
?到目前为止,您正在使用列表。
if size == 3:
[G,x,y, NaN, NaN]= Array
but is not working...........
在没有说出错的情况下说“不工作”是不礼貌的 - 错误的结果,具体的错误信息等等?
[a,b,c,NaN,NaN]=[1,2,3,4,5]
运行正常,将NaN
设置为5.但只有3个值,我得到ValueError: need more than 3 values to unpack
。这是基本的Python - 当解压缩时,你需要在=。
你想用这个表达做什么?
从numpy
和数组中退一步,尝试使用Python列表使其正常工作。