定义循环的python数组大小

2024-04-26 20:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要通过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

但不起作用。。。。。。。。。。。你知道吗


Tags: 数据inforsizeif定义isline
1条回答
网友
1楼 · 发布于 2024-04-26 20:33:00

我不知道你想做什么,但我会批评你的代码

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列表中正确使用它。你知道吗

相关问题 更多 >