2013-09-26 16 views
5

2つの列がタブで区切られ、配列に読み込みたいいくつかのデータが入っていて、インスタンスプロットデータ。 2番目の列のデータは科学的表記法であり、10e-27 10e-50の大きさから非常に小さい値をとることができます。例えば、ここでここで2列のテキストファイルからPythonの配列にfloatを読み込む際にエラーが発生する

0.00521135 -1.197189e-31 
0.00529274 -7.0272737e-32 
0.00530917 -6.0163467e-32 
0.00532565 -4.9990405e-32 
0.00534218 -3.9747722e-32 
0.00535876 -2.9457271e-32 
0.0053754 -1.9094542e-32 
0.00539208 -8.6847519e-33 
0.00540882 1.7851373e-33 
0.00542561 1.2288483e-32 
0.00544245 2.2850705e-32 
0.00545934 3.3432858e-32 
0.00547629 4.4084594e-32 
0.00549329 5.4765499e-32 
0.00551034 6.5491709e-32 

は私のコードがどのように見えるかであるデータのサンプルです:私は(.DAT形式)サンプルデータにテストするには、このコードを使用している

import numpy as np 
import matplotlib.pyplot as plt 
with open('data.dat', 'r') as f2: 
lines = f2.readlines() 
data = [line.split()for line in lines] 
data2 = np.asfarray(data) 
x1 = data2[:,0] 
y1 = data2[:,1] 
plt.plot(x1, y1) 
plt.show() 

ファイルは、それ私のデータセットでこのコードを実行すると、次のエラーが表示されます。

Traceback (most recent call last): 
File "read_txt_col.py", line 17, in <module> 
data2 = np.asfarray(data) 
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages /numpy/lib/type_check.py", line 103, in asfarray 
return asarray(a,dtype=dtype) 
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/numeric.py", line 235, in asarray 
return array(a, dtype, copy=False, order=order) 
ValueError: setting an array element with a sequence. 

誰かが助けてくれますか?

+0

この上のSOの答えがたくさんあります。http://stackoverflow.com/は質問/ 4674473/valueerror-setting-an-sequence-with-a-sequence http://stackoverflow.com/questions/13310347/numpy-valueerror-setting-an-array-element-with-a-sequence-this -message-may-app基本的な問題は、異なる長さのシーケンスがあるように見えるということです。バイナリ検索でデータの問題を発見しようとします:データの半分を読み込みます。成功しましたか?半分のデータを追加してテストします。成功しましたか?別の半分などを追加してください。 – hughdbrown

答えて

7

それはnumpy.loadtxtを使用することがはるかに簡単だろう!、車輪の再発明をしないでください:

>>> import numpy as np 
>>> import matplotlib.pyplot as plt 
>>> data = np.loadtxt('data.dat') 
>>> x1 = data[:,0] 
>>> y1 = data[:,1] 
>>> plt.plot(x1, y1) 
>>> plt.show() 

enter image description here

+0

特にエラーチェックでは、[numpy.genfromtxt()](http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt)に言及する価値があります。 html) – Greg

関連する問題