如何将长python列表格式化为Fortran多行数组?

2024-06-02 20:19:55 发布

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

我有个问题。我正在用Fortran编写一个数学计算程序。在那里我必须初始化一个随机值数组。这些值必须为正态分布,平均值为0,标准偏差为1。你知道吗

我在Python2.7中编写了以下脚本来生成900个这样的值。你知道吗

import numpy as np

mu, sigma = 0, 1.0
list = []

i = 0
while i < 901:
    s = np.random.normal(mu, sigma, None)
    list.append(format(s, '.3f'))
    i += 1

print list

返回以下列表:

['-1.403', '-1.498', '0.573', '-0.056', '-0.226', '-0.514', ..., ]

问题是,我不能将其复制到Fortran代码中,因为其中的值是按以下方式编写的:

DATA STR / 0.978,  -0.52 ,  -0.368,   1.69 ,  &   !Giving random values. Temperary solution for
          -1.48 ,   0.985,   1.475,  -0.098,  &   !random number generating, based on the normal law
          -1.633,   2.399,   0.261,  -1.883,  &
          -0.181,   1.675,  -0.324,  -1.029,  &
          -0.185,   0.004,  -0.101,  -1.187,  &
          -0.007,   1.27 ,   0.568,  -1.27 ,  &
           ... &
           ... &
           ... &

           /

这意味着我必须将Python列表格式化为:

NUM1, NUM2, NUM3, NUM4, &
XXXX, XXXX, XXXX, XXXX, &
...
...
...

我该怎么做呢?你知道吗


Tags: 程序列表nprandom数组sigmalist平均值
1条回答
网友
1楼 · 发布于 2024-06-02 20:19:55

我没有使用itertools,而是用for循环拆分列表,然后用另一个元素打印每个元素。你知道吗

import numpy as np


mu, sigma = 0, 1.0
alist = []

i = 0
while i < 900:
    s = np.random.normal(mu, sigma, None)
    alist.append(format(s, '.3f'))
    i += 1


new = []

for i in range(0, len(alist), 4):
    new.append(alist[i : i + 4])

for i in range(len(new)):
    print ', '.join(new[i]) + ', &'

相关问题 更多 >