以特定格式打印浮动数组

时间:2013-07-30 15:03:26

标签: python arrays printing spacing

我在将以下数组写入.txt文件时遇到问题。

这是我的代码:

for i in range(len(my_particles)):
    list = []
    list.append(my_particles[i].n)
    for z in range(len(my_particles[i].neighbours)):
        list.append(my_particles[i].neighbours[z])

    #for i in range(len(list)):
    print >>f, list

f.close()

这是输出:

[0, 2, 20, 91, 114, 127]
[1, 6, 24, 114]
[2, 0, 65, 73, 91, 114]
[3, 71, 91, 120]
[4, 16, 69, 104]
[6, 1, 25, 87, 100, 114]
[7, 19, 83, 111]
[9, 38, 59, 72, 76]
[11, 56, 101, 108]
[12, 86, 92, 126]
[13, 30, 79, 82, 101, 104]
[14, 78, 103, 124]
[15, 23, 44, 90, 116]
[16, 4, 97, 106, 108]
[17, 19, 85, 111]
[18, 47, 60, 68, 74]

有没有办法以这种格式打印它?

0, 2, 20, 91, 114, 127
1, 6, 24, 114

我试过了

print>>f, "".join(list)

但它不起作用,因为它是numpy64浮点列表。

6 个答案:

答案 0 :(得分:2)

您希望首先从列表的每个成员中创建字符串。尝试

print >>f, ', '.join(map(str,list))

另外,不要将变量命名为list

答案 1 :(得分:1)

尝试

",".join(str(i) for i in list))

答案 2 :(得分:0)

hacky fix:

print(str(list).replace(']','').replace('[',''))

答案 3 :(得分:0)

将它们转换为字符串应该可以正常工作

print >>f, ', '.join(str(elem) for elem in my_list)

正如布里恩所说,不要打电话给你的清单list

答案 4 :(得分:0)

如果list是一个numpy数组的浮点数:

list.astype('str')

OR-您也可以使用csv快速编写np.arrays:

import csv
import numpy as np

a = np.random.uniform(0,10,size = (5,5))
writer = csv.writer(open('txtfile.txt','wb'))
writer.writerows(a)

收益txt文件:

3.55183065126,1.05649949199,5.15510365109,1.0369928554,7.66646909667
9.5145737219,1.53877245296,5.53917128683,1.55343228883,8.78227048275
5.80408228776,2.58788175555,0.502704494319,1.63833152952,3.59898531148
2.94430872526,2.42069917781,5.75920106752,2.42453222446,1.73308148034
1.9579612159,0.609573767011,3.87717828624,7.86853109668,7.41038950637

或者如果你想要整数,添加:

writer.writerows(a.astype(int))

会产生

2,0,3,4,1
9,5,4,4,3
9,7,6,4,2
3,5,7,2,0
6,0,2,7,7

答案 5 :(得分:0)

首先,在处理文件时应使用with statement,以确保它们自动关闭,即使程序遇到错误也是如此。其次,您可以将for i in range(len(my_list))my_list[i]替换为for i in my_listi。此外,使用名为list的变量会覆盖内置类型列表。通常的做法是使用尾随下划线来避免这种情况。

此代码应该有效(尽管我目前没有安装Numpy来测试它)

with open("myfilename.txt","w") as f:
    for i in my_particles:
        list_ = []
        list_.append(i.n)

        for j in value.neighbours:
            list_.append(j)

        f.write(", ".join(str(n) for n in list_))

请注意,这将删除文件的先前内容。如果您不想这样,请在打开的函数中使用“a”打开文件,而不是“w”。