数组如下
array1=np.array([1.5397e-05,8.7383e+00,2.6633e+01,1.1309e+03,4.3194e+02,2.5086e+01])
array2=np.array([4.83,1.4,0.4,-7.2,-3.64,0.6])
array3=([‘Sun’,’Sirius’,’Arcuturus’,’Betelgeuse’,’Polaris’,’Vega’])
我希望数据看起来像下面一个名为star.txt的文本文件中的信息。
Sun 1.5397e-05 4.83
Sirius 8.7383e+00 1.4
Arcuturus 2.6633e+01 0.4
Betelgeuse 1.1309e+03 -7.2
Polaris 4.3194e+02 -3.64
Vega 2.5086e+01 0.6
有人能帮忙吗?
免责声明:一旦你已经在使用NumPy,我就会使用矢量化方法,即(无循环,使用NumPy's或Panda的力量为你做这件事(
你可以像@pathoren在评论中提到的那样使用np.savetxt()
函数:
np.savetxt('c:/temp/out.csv', np.array([array3, array1, array2]).T, delimiter='t', fmt="%s")
或使用pandas模块:
import pandas as pd
pd.DataFrame({'col1':array3,'col2':array1,'col3':array2}).to_csv('c:/temp/out.csv', index=False, header=None, sep='t')
注意:我不建议您使用空格/TAB分隔的文本,因为这可能会在将来引起问题(例如,当您需要读取/解析此文件时,如果您的星形名称中有多个单词(
怎么样?
import numpy as np
array1=np.array([1.5397e-05,8.7383e+00,2.6633e+01,1.1309e+03,4.3194e+02,2.5086e+01])
array2=np.array([4.83,1.4,0.4,-7.2,-3.64,0.6])
array3 = ['Sun','Sirius','Arcuturus','Betelgeuse','Polaris','Vega']
with open('star.txt', 'w') as f:
for a, b, name in zip(array1, array2, array3):
f.write('{0:15}{1:15}{2:15}n'.format(name, a, b))
输出
文件star.txt
在同一文件夹中,包含以下内容:
Sun 1.5397e-05 4.83
Sirius 8.7383 1.4
Arcuturus 26.633 0.4
Betelgeuse 1130.9 -7.2
Polaris 431.94 -3.64
Vega 25.086 0.6
对于记录,如果您使用比array1
、array2
等更多的描述性变量名,那就太好了,这样我就可以使用比a
、b
等更多的指示性变量名。
它太简单了,几乎不值得指出,你真的应该能够自己解决这个问题。我建议你遵循Python的基本教程,网上有很多。
有几种解决方案,这是我的:
import numpy as np
array1=np.array([1.5397e-05,8.7383e+00,2.6633e+01,1.1309e+03,4.3194e+02,2.5086e+01])
array2=np.array([4.83, 1.4, 0.4, -7.2, -3.64, 0.6])
array3=(['Sun','Sirius','Arcuturus','Betelgeuse','Polaris','Vega'])
with open('star.txt', 'w') as fh:
for a,b,c in zip(array1, array2, array3):
print("%-10s %e %05.2f" % (c, a, b), file = fh)
这是假设Python 3。