2014-08-19 1 views
0

Я пытаюсь построить массив значений x и y и продолжать получать эту ошибку.ValueError: x и y должны иметь такое же первое измерение при построении

ValueError: x and y must have same first dimension

Это мой код:

import numpy as np 
import pylab as plt 
from matplotlib import rc 

def analyze(targt_data, targt_data_name, trang_data, trang_data_name, matches): 
    """Analyze a set of samples on target data""" 

    _timefrm = [40, 80, 120] 
    _scorefilter = 0.8 
    index = 0 
    matches = matches[np.where(matches[:, 3] > _scorefilter)] 

    # PLOTS 
    rc('text', usetex=True) 
    fig = plt.figure() 
    plt1 = fig.add_subplot(321) 
    plt1.hold(True) 
    plt2 = fig.add_subplot(322) 
    plt3 = fig.add_subplot(323) 
    plt4 = fig.add_subplot(324) 
    plt5 = fig.add_subplot(325) 
    plt6 = fig.add_subplot(326) 

    matches = matches[np.where(matches[:, 2] == index)] 
    avg_score = np.mean(matches[:, 3]) 

    # PLOT SAMPLE 
    plt1.plot(trang_data[index]) 

    rwresults = [targt_data[y-1:y+np.max(_timefrm)] for y in matches[:,1]] 
    pctresults = [np.log(np.divide(y[1:], y[0])) for y in rwresults] 
    for res in pctresults: 
     plt1.plot(np.arange(len(trang_data[index]), 
        len(trang_data[index])+np.max(_timefrm)), 
        np.dot(trang_data[index][-1], np.add(res, 1))) 
    plt.show() 

results_name = raw_input('Load matching scores: ') 

# #### LOAD MATCHING SCORES FROM DB 
results, training_data_name, target_data_name = Results(DB).load_matching_scores(results_name) 

# #### LOAD TARGET DATA AND TRAINING DATA 
target_data = TargetData(DB).load(target_data_name) 
training_data = TrainingData(DB).load(training_data_name) 

# #### RUN ANALYSIS 
analyze(target_data, target_data_name, training_data, training_data_name, results) 

Кроме того, здесь значения распечатываются:

(Pdb) len(np.dot(trang_data[ns.index][-1], np.add(pctresults[0], 1))) 
120 

(Pdb) len(np.arange(len(trang_data[ns.index]), len(trang_data[ns.index])+np.max(_timefrm))) 
120 

(Pdb) np.dot(trang_data[ns.index][-1], np.add(pctresults[0], 1)).shape 
(120,) 

(Pdb) np.arange(len(trang_data[ns.index]), len(trang_data[ns.index])+np.max(_timefrm)).shape 
(120,) 

ответ

3

Оказывается, один из подмассивов был слишком коротким:

(Pdb) len(pctresults[71]) 
100 

Ошибка значения "x и y must hav e такое же первое измерение "поднимается методом plot(x, y), когда x и y не имеют одинаковой длины.

Смежные вопросы