如何以正确的格式在文本文件中编写两个numpy数组?

时间:2016-04-25 20:03:11

标签: python arrays numpy

我想创建输入文件,其格式如下(21行和20列)

0.   2900.   0. 2900.   0. 2900.
100. 2900. 100. 2900. 100. 2900.
200. 2900. 200. 2900. 200. 2900.
300. 3600. 300. 3600. 300. 3600.

这是我的代码

import numpy as np
import matplotlib as m
import matplotlib.pyplot as plt

# synthetic model code
# 6 zones

a1=np.empty(300)
a1.fill(2900)

a2=np.empty(400)
a2.fill(3600)

a3=np.empty(200)
a3.fill(4700)

a4=np.empty(100)
a4[0:81]=4900 
a4[81:100]=5400

a5=np.empty(100)
a5[0:6]=5400 
a5[6:74]=4900
a5[74:78]=5100
a5[78:100]=5400

a6=np.empty(100)
a6[0:11]=5400 
a6[11:70]=4900
a6[70:77]=5100
a6[77:100]=5400

a7=np.empty(100)
a7[0:15]=5400 
a7[15:61]=4900
a7[61:74]=5100
a7[74:100]=5400

a8=np.empty(100)
a8[0:19]=5400
a8[19:57]=4900
a8[57:70]=5100
a8[70:100]=5400

a9=np.empty(100)
a9[0:21]=5400
a9[21:57]=4900
a9[57:70]=5100
a9[70:100]=5400

a10=np.empty(100)
a10[0:21]=5400
a10[21:57]=4900
a10[57:70]=5100
a10[70:100]=5400

a11=np.empty(100)
a11[0:21]=5400
a11[21:57]=4900
a11[57:70]=5100
a11[70:100]=5400

a12=np.empty(300)
a12.fill(5400)

b=np.concatenate((a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12))
c = b[::5].copy() 
b1=np.reshape(c,(20,20))
print type(b1)
x = np.array([0.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 900.0, 1000.0, 1100.0, 1200.0, 1300.0, 1400.0, 1500.0, 1600.0, 1700.0, 1800.0, 1900.0, 2000.0])

np.set_printoptions(threshold=np.inf, linewidth=np.inf) 
with open('velpar1.txt', 'w') as f:
    f.write(np.array2string(b1, separator=''))

原始的velpar1.txt

[[ 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900.]
 [ 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900.]
 [ 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900. 2900.]
 [ 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600.]
 [ 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600.]
 [ 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600.]
 [ 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600. 3600.]
 [ 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700.]
 [ 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700. 4700.]
 [ 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5400. 5400. 5400.]
 [ 5400. 5400. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5100. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5100. 5100. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5100. 5100. 5400. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 5400. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5100. 5100. 5400. 5400. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 5400. 5400. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5100. 5100. 5400. 5400. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 5400. 5400. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5100. 5100. 5400. 5400. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 5400. 5400. 4900. 4900. 4900. 4900. 4900. 4900. 4900. 5100. 5100. 5400. 5400. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400.]
 [ 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400. 5400.]]

如何在f.write语句中包含np.array x?

1 个答案:

答案 0 :(得分:4)

numpy有一个很棒的函数savetxt(),可以将数组以您正在寻找的格式保存到文件中。我建议使用此代替write

这是一个简单的例子

   sample_array = np.random.rand(3,2)
   myfile = open('foo.out', 'wb' )
   np.savetxt(myfile, sample_array)