在forloop中写入2d数组

2024-04-26 22:03:25 发布

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

我想从以下for循环创建2个数组:

with open('y.txt', 'w') as f:
    for j in range (1, 3):
        xN = 0.5 + 0.5*random.uniform(0, 1)
        r = 3.8 + 0.15*random.uniform(0, 1)
        for i in range (1, 313+1):
            xNew = logistic_map(xN, r)
            xN = xNew
            f.write("%f" % xNew)

这当然是创建一个313*2=626行的文本文件。
我想做的是能够自动创建j数组:

Q(j=1)=前313点
Q(…)
Q(j=N)=最后313分。你知道吗

另外,如何将其保存到一个包含313行和j列的文本文件中?我现在的文本文件只保存了一个626行的文件。你知道吗


Tags: intxtmapforaswithrangerandom
1条回答
网友
1楼 · 发布于 2024-04-26 22:03:25

要创建二维数组,可以修改代码,如下所示:

import numpy as np
Q = []

for j in range (1, 3):
    xN = 0.5 + 0.5*random.uniform(0, 1)
    r = 3.8 + 0.15*random.uniform(0, 1)
    temp = []
    for i in range (1, 313+1):
        xNew = logistic_map(xN, r)
        xN = xNew
        temp.append(xNew)
    Q.append(xNew) # Saves each row of 313 points as a separate sub-array

 Q = np.transpose(np.array(Q)) # Convert this to an array and take the transpose of it

然后可以使用^{}将其保存为文本文件。你知道吗

但是,如果实际上不需要子数组包含313个点,可以直接按转置顺序添加这些点,从而跳过后面的np.transpose()步骤。像这样:

import numpy as np
Q = [[0 for j in range(2)] for i in range (313)] # Creates an array of zeros with 2 columns and 313 rows

for j in range (1, 3):
    xN = 0.5 + 0.5*random.uniform(0, 1)
    r = 3.8 + 0.15*random.uniform(0, 1)
    for i in range (1, 313+1):
        xNew = logistic_map(xN, r)
        xN = xNew
        Q[i][j] = xNew

 Q = np.array(Q) # Convert this to an array and take the transpose of it

相关问题 更多 >