首页 > 解决方案 > 使用 arange 进行绘图以定义变量

问题描述

我最近开始学习 Python。

我了解到,为了定义自变量(下例中的 z),您可以使用 numpy.linspace() 编写:

from matplotlib import pyplot as pp
import numpy as np
from math import pi

#z=np.linspace(1,-1) z definition works
z=np.arange(1,-1) #z definition does not work
w=z

pp.plot(z,w)
pp.xlabel("Input")
pp.ylabel("Output")
pp.title("Function")
pp.show()
print(z,w)

但是,如果我们使用 np.arange 定义 z (请参见注释行,似乎无法显示绘图(没有出现图表)。如果我想对自变量使用后一种定义,我还能绘制另一个变量或我是否被迫使用 linspace 定义?谢谢

标签: pythonpython-3.xmatplotlib

解决方案


np.linspace(1, -1)创建一个以 开头1和结尾的数字数组-1。默认有 50 步,所以每一步的长度为-2/49. 通常,步骤数是明确给出的,例如np.linspace(1, -1, 200)。标准,选择的起始值小于终止值,但两种方式都有效。

np.arange(1, -1)创建一个从 1 开始的数组,添加一个步长(默认为 1),并在该值大于或等于停止值时结束。因此,在这种情况下,它会立即停止,创建一个空数组。np.arange(1, -1, -1)将采取 -1 的步骤,并创建一个数组[1, 0],在 之前停止-1

当这些数组被用在表达式中时,Numpy 的魔力就开始了,就好像它们是单个变量一样。这称为广播

这是一个示例图,显示np.linspace. w仅针对 的 50 个给定值计算z。请注意,虽然z是从1到创建的-1,但默认图在右侧显示正面。另请注意,导入 matplotlib 的标准方式是 as plt,这使得其他人更容易遵循代码。

from matplotlib import pyplot as plt
import numpy as np

z = np.linspace(1, -1)
w = np.sin(z * np.pi)
plt.plot(z, w, '-bo')
plt.xlabel('$z$')
plt.ylabel(r'$w = \sin(z * pi)$')
plt.show()

示例图


推荐阅读