2016-07-23 8 views
0

ipythonを初めて使用しています。私はこれを実行しようとすると、それは、これらのエラーValueError:xとyは同じ最初のディメンションを持つ必要があります。ipython 3.5


ValueError        Traceback (most recent call last) 
<ipython-input-12-211954bb4dc5> in <module>() 
     6 plt.title("Actual Derivatives vs Estimates") 
     7 x = range(-10,10) 
----> 8 plt.plot(x, map(derivative, x), 'rx')   # red x 
     9 plt.plot(x, map(derivative_estimate, x), 'b+') # blue + 
    10 plt.show() 

C:\Users\User\Anaconda3\lib\site-packages\matplotlib\pyplot.py in plot(*args, **kwargs) 
    3152   ax.hold(hold) 
    3153  try: 
-> 3154   ret = ax.plot(*args, **kwargs) 
    3155  finally: 
    3156   ax.hold(washold) 

C:\Users\User\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs) 
    1809      warnings.warn(msg % (label_namer, func.__name__), 
    1810         RuntimeWarning, stacklevel=2) 
-> 1811    return func(ax, *args, **kwargs) 
    1812   pre_doc = inner.__doc__ 
    1813   if pre_doc is None: 

C:\Users\User\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in plot(self, *args, **kwargs) 
    1422    kwargs['color'] = c 
    1423 
-> 1424   for line in self._get_lines(*args, **kwargs): 
    1425    self.add_line(line) 
    1426    lines.append(line) 

C:\Users\User\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _grab_next_args(self, *args, **kwargs) 
    384     return 
    385    if len(remaining) <= 3: 
--> 386     for seg in self._plot_args(remaining, kwargs): 
    387      yield seg 
    388     return 

C:\Users\User\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _plot_args(self, tup, kwargs) 
    362    x, y = index_of(tup[-1]) 
    363 
--> 364   x, y = self._xy_from_xy(x, y) 
    365 
    366   if self.command == 'plot': 

C:\Users\User\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _xy_from_xy(self, x, y) 
    221   y = _check_1d(y) 
    222   if x.shape[0] != y.shape[0]: 
--> 223    raise ValueError("x and y must have same first dimension") 
    224   if x.ndim > 2 or y.ndim > 2: 
    225    raise ValueError("x and y can be no greater than 2-D") 

ValueError: x and y must have same first dimension, 

は、誰もがこの問題を解決するために私を助けてください、私を示して、私のipythonで

def derivative(x): 
    return 3*(x^2) 
derivative_estimate = lambda x: difference_quotient(cube, x, h=0.00001) 

x = range(-10, 10) 
import matplotlib.pyplot as plt 
plt.title("Actual Derivatives vs Estimates") 
x = range(-10,10) 
plt.plot(x, map(derivative, x), 'rx', label = 'Actual')   # red x 
plt.plot(x, map(derivative_estimate, x), 'b+', label = 'Estimate') # blue + 
plt.show() 

をこのコードのスニペットがありますか?

+1

FYI:Pythonでは '^'はべき乗ではありません。それは "bitwise exclusive or"です。 「x 2乗」を「x 2乗」とする。 –

+0

はい、後でそれを把握します –

答えて

1

matplotlibののplot機能がmapによって返されたイテレータを扱うことができないplotを呼び出す前に、リストにイテレータを展開します。

plt.plot(x, list(map(derivative, x)), 'rx', label = 'Actual') 
+0

はい、それは答えです。私は自分の投稿に答えるには余りにも忙しかったです。しかし、あなたはすでにそれをしています。だからそれを受け入れる:) –

0

numpyをインポートしてからrangeの代わりにnumpy.linspaceまたはnumpy.arangeのいずれかを使用してください。私はあなたの問題がを取るあなたの関数derivativeの内部で作成されたと信じています。 xは標準rangeから返されたリスト(ある場合は、3*x[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]x=[1, 2, 3, 4]場合を返します。あなたが取得したいことは3*x = [3, 6, 9, 12]で、あなたの代わりにnumpy.linspaceまたはnumpy.arangeを使用している場合、これがケースになります

ドキュメントへのリンク。。: numpy.arangenumpy.linspace

+0

いいえ、それはnumpyとは関係ありません –

+0

xリストの長さはどのくらいですか、関数の導関数から返されるリストの長さはどのくらいですか? 'x = range(-10、10)'を使うと 'len(x)= 20'と' len(derivative(x))= 60'が得られます。 – pathoren

関連する問題