I am new to ipython. I have this snippet of code in my ipython
我是ipython的新成员。我在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()
When I try to run this, it shows me these errors
当我试图运行它时,它显示了这些错误。
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,
Can anyone please help me to solve this issue?
有人能帮我解决这个问题吗?
2 个解决方案
#1
1
Matplotlib's plot
function can't handle the iterator returned by map
. Expand the iterator to a list before calling plot
:
Matplotlib的plot函数不能处理映射返回的迭代器。在调用plot之前将迭代器扩展到列表:
plt.plot(x, list(map(derivative, x)), 'rx', label = 'Actual')
#2
0
Try to import numpy
and then use either numpy.linspace
or numpy.arange
instead of range
. I believe your problem is created inside your function derivative
, where you take 3*x
. If x
is a list (which is returned from the standard range
, 3*x
will return [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
if x=[1, 2, 3, 4]
. What you want to get is 3*x = [3, 6, 9, 12]
, and this will be the case if you use numpy.linspace
or numpy.arange
instead.
尝试导入numpy,然后使用numpy。linspace或numpy。而不是范围不等。我相信你的问题是在你的函数导数中产生的,你取3*x。如果x是一个列表(从标准范围返回,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。而不等。
Documentation links: numpy.arange and numpy.linspace
文档链接:numpy。论坛和numpy.linspace
#1
1
Matplotlib's plot
function can't handle the iterator returned by map
. Expand the iterator to a list before calling plot
:
Matplotlib的plot函数不能处理映射返回的迭代器。在调用plot之前将迭代器扩展到列表:
plt.plot(x, list(map(derivative, x)), 'rx', label = 'Actual')
#2
0
Try to import numpy
and then use either numpy.linspace
or numpy.arange
instead of range
. I believe your problem is created inside your function derivative
, where you take 3*x
. If x
is a list (which is returned from the standard range
, 3*x
will return [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
if x=[1, 2, 3, 4]
. What you want to get is 3*x = [3, 6, 9, 12]
, and this will be the case if you use numpy.linspace
or numpy.arange
instead.
尝试导入numpy,然后使用numpy。linspace或numpy。而不是范围不等。我相信你的问题是在你的函数导数中产生的,你取3*x。如果x是一个列表(从标准范围返回,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。而不等。
Documentation links: numpy.arange and numpy.linspace
文档链接:numpy。论坛和numpy.linspace