Dan*_*SFT 6 python numpy matplotlib python-3.x
我想使用Matplotlib在Python中从0到5绘制以下分段函数。
f(x) = 1, x != 2; f(x) = 0, x = 2
在Python中...
def f(x):
if(x == 2): return 0
else: return 1
Run Code Online (Sandbox Code Playgroud)
使用NumPy我创建一个数组
x = np.arange(0., 5., 0.2)
array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ,
2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2,
4.4, 4.6, 4.8])
Run Code Online (Sandbox Code Playgroud)
我尝试过类似...
import matplotlib.pyplot as plt
plt.plot(x,f(x))
Run Code Online (Sandbox Code Playgroud)
要么...
vecfunc = np.vectorize(f)
result = vecfunc(t)
Run Code Online (Sandbox Code Playgroud)
要么...
def piecewise(x):
if x == 2: return 0
else: return 1
import matplotlib.pyplot as plt
x = np.arange(0., 5., 0.2)
plt.plot(x, map(piecewise, x))
ValueError: x and y must have same first dimension
Run Code Online (Sandbox Code Playgroud)
但是我没有正确使用这些功能,现在只是随机猜测如何做到这一点。
一些答案开始到达那里。。。但是这些点被连接到情节上的一条线上。我们如何绘制点?
问题是该函数f不接受一个数组作为输入,而是一个数字。你可以:
plt.plot(x, map(f, x))
Run Code Online (Sandbox Code Playgroud)
该map函数接受一个函数f,一个数组x并返回另一个数组,其中该函数f应用于数组的每个元素。
一些答案开始到达那里。。。但是这些点被连接到情节上的一条线上。我们如何绘制点?
import matplotlib.pyplot as plt
import numpy as np
def f(x):
if(x == 2): return 0
else: return 1
x = np.arange(0., 5., 0.2)
y = []
for i in range(len(x)):
y.append(f(x[i]))
print x
print y
plt.plot(x,y,c='red', ls='', ms=5, marker='.')
ax = plt.gca()
ax.set_ylim([-1, 2])
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13403 次 |
| 最近记录: |