2016-03-24 31 views
2

Amacım, farklı dosyalardan gelen verilerle 3D dağılımını çizmektir.Python dizgeyi float'a dönüştüremedi

Bu çalıştık:

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
import numpy as np 


fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

x = [] 
y = [] 
z = [] 

readfile = open('axeX.txt', 'r') 
file = readfile.read().split('\n') 
for plot in file: 
    x = plot.split(',') 
    x.append(x[0]) 

....  

Not: bu hata var

9.0745818614959717e-01 
1.1413983106613159e+01 
1.7582545280456543e+00 

: axeX.txt gibi verileri içeren

ValueError: could not convert string to float: 
+0

dosyanızı okumak için 'np.genfromtxt' veya' np.loadtxt' kullanmayı deneyin. – tom

+0

.txt dosyanızda kaç tane sütununuz var? – ThePredator

+0

Lütfen en az bir örnek verin. x.append (şamandıra (x [0])) ValueError: dize dalgalanmaya dönüştürmek olabilir: –

cevap

0

kullanımı şamandıra (x [0]) dize kadar çalmak için

+0

Aynı sorun vardır. txt, 'r') sepfile = readfile.read() bölünmüş (. '\ n') sepfile içinde arsa için : alanları = plot.split (',') x.append (şamandıra (alanlar [ 0])) aynı sorun: x.append içinde Dosya "convert.py", hat 8, (şamandıra (alanların [0])) ValueError: yüzer dizeyi dönüştürmek olamazdı: – ahmed

0

Her döngüde x geçersiz:

['1.7582545280456543e+00', 1.7582545280456543] 

hiçbir:

x = [] 
for plot in file: 
    x = plot.split(',') 
    x.append(float(x[0])) 

Yani orijinal dize ve dosyadaki son satırından dönüştürülen şamandıra içeren iki elementin bir liste ile sona erecek ne kadar satır okuduğun önemli değil.

deneyin: Sorunuza gösterildiği gibi sadece sayıların bir sütun varsa

x = [] 
for plot in file: 
    temp = plot.split(',') 
    x.append(float(temp[0])) 

, böyle x okuyabilir: Artık

with open('axeX.txt', 'r') as fobj: 
    x = [float(line) for line in fobj] 

:

>>> x 
[0.9074581861495972, 11.41398310661316, 1.7582545280456543] 
0

x değişkenini birden çok farklı amaçla kötüye kullandığınızı düşünüyorum:

# here it's initialized - apparently you want to collect a list of numbers 
x = [] 
for plot in file: 
    # but here you assign the result of splitting a line of text from 
    # your input file. I would use a different variable here 
    x = plot.split(',') 
    # and now you start appending to it again? 
    x.append(x[0]) 

Ben denemek:

x = [] 
for plot in file: 
    fields = plot.split(',') 
    x.append(float(fields[0])) 
+0

x = [] readfile = açık ('axeX – ahmed

İlgili konular