python kompilacja programu

0

Witam mam problem z programem, a mianowicie podczas kompilacji wyrzuca mi w linijce 16 taki o to błąd:

dane = np.fromstring(zawartosc_pliku, sep=' ').reshape((-1,2))
ValueError: total size of new array must be unchanged

 
#-*- coding: utf-8 -*-                                                         
import pylab as plt
from sys import argv, exit                                                     
import numpy as np
from scipy.stats import norm                                                   

if len(argv) == 'C:\Users\stiffler\Desktop\1.txt':
    print "python ", argv[0], '"nazwa_pliku_wejściowego"', "[N]"               
                                                 
    exit(1)
plik = open('C:\Users\Devil\Desktop\dane.txt')                                                           
N=20
if len(argv) >= 3:
    N = int(argv[2])
zawartosc_pliku = plik.read()
dane = np.fromstring(zawartosc_pliku, sep=' ').reshape((-1,2))                 
tab = [] 
for i in dane:
    tab += i[1]*[i[0]]                                                         

mu, sigma = norm.fit(tab)                                                      

n, bins, patches = plt.hist(tab,N, normed=0)                                   

x = np.linspace(min(bins),max(bins),1000)                                      
y = plt.normpdf(x, mu, sigma)*600
l = plt.plot(x, y, 'r--', linewidth=2)                                   
plt.xlabel('ilosc zliczen/min')                                                      
plt.ylabel('ilosc trafien')
plt.title(r'$\mathrm{Histogram:}\ \mu=%.3f,\ \sigma=%.3f$' %(mu, sigma))       


plt.show()

pomoże ktoś?

0

Masz na myśli "podczas uruchomienia"?

Stawiam na to że wczytujesz zakres danych który nie pasuje do podanej struktury.

Spróbuj najpierw skowertować ze stringa, wyświetlić i zobacz co dostajesz.
Powinna być wielokrotność 2.

http://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

0

tak.

u mnie dane są w formie 2 kolumn
np:

10 1 gdzie 1 to liczba powtórzeń 10 itd ... w sensie ile razy wystapiło 10 podczas eksperymentu
11 1
13 1
14 6
15 5
16 5
17 5
18 5

program wczytuje dane i na ich podstawie rysuje krzywa gaussa dzwonowa i na to naklada(rysuje na wykresie) rozklad normalny.

1

Jeszcze raz: wyświetl te dane po wczytaniu (jako liczby). Być może nie do końca się wczytują.

0

wszystko chodzi. Mój błąd, do pliku wkradły się niepożadane znaki typu $@ itp i wywalało przez to błąd.

jednak nie wszystko chodzi dobrze a mianowicie wyniki na osi "Y" są błędne tzn żadna z moich wartości ( ilosc trafien ) nie jest tak duza jak na wykresie.

u mnie wynosi 16 maxymalna ilosc trafien a tutaj okolo 26-27. jak to naprawic?

albo chociaż żeby na oś Y była podpisana od 0.00 , 0.01 , 0.02 , 0.03

1 użytkowników online, w tym zalogowanych: 0, gości: 1