我有一个这样的数据文件:
0.001 5.515e-01 1.056e+00 1.384e-01 1.273e+01 -1.808e-01 1.255e+01
0.002 2.335e-02 -1.100e-03 -8.850e-03 1.273e+01 -3.176e-01 1.241e+01
0.003 2.335e-02 -1.100e-03 -8.850e-03 1.273e+01 -3.177e-01 1.241e+01
0.004 2.335e-02 -1.101e-03 -8.851e-03 1.273e+01 -3.177e-01 1.241e+01
0.005 2.335e-02 -1.101e-03 -8.851e-03 1.273e+01 -3.177e-01 1.241e+01
0.006 2.335e-02 -1.102e-03 -8.851e-03 1.273e+01 -3.177e-01 1.241e+01
0.007 2.335e-02 -1.102e-03 -8.852e-03 1.273e+01 -3.177e-01 1.241e+01
... ... ... ... ... ... ...
第一列是时间,最后一列是总能量,第二列是势能,第三列是动能。现在我想把这些能量绘制成时间的函数,但我不想一次性绘制整个数组。
相反,我希望选择一个时间并将能量绘制到那个时间,然后再次选择另一个时间并将能量绘制到那个时间(始终从t = 0开始)。我为此编写的代码如下:
from pylab import*
from numpy import*
data=loadtxt('500.txt')
t=data[:,0]
KE=data[:,-3]
PE=data[:,-2]
TE=data[:,-1]
t=0
while t<100:
ke=KE[:t]
time=t[:t]
plot(time,ke)
picname=temp+'e.png'
savefig(picname)
show()
t=t+40
但它会返回File "energyprofile.py", line 14, in <module>
time=t[:t]
TypeError: 'int' object has no attribute '__getitem__'
。我怎样才能解决这个问题呢?
答案 0 :(得分:0)
这里:
t=data[:,0]
KE=data[:,-3]
PE=data[:,-2]
TE=data[:,-1]
必须替换为:
t=data[:0]
KE=data[:-3]
PE=data[:-2]
TE=data[:-1]
答案 1 :(得分:0)
问题在于循环变量名称。已有一个名为t
的数组。
t=data[:,0]
因此,当在数组t
内调用数组索引t
时,
time=t[:t]
它返回错误。更改变量名称时,问题将被删除:
t1=0
while t1<100:
ke=KE[:t1]
time=t[:t1]
plot(time,ke)
picname=str(t1)+'e.png'
savefig(picname)
show()
t=t+40