python - 使用 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 定义?谢谢
解决方案
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()
推荐阅读
- javascript - 如何让我的键盘读取按键并将其显示在下面的框中?
- c++ - 在抽象类的具体实现中内部调用装饰函数
- ios - iOS Objective C - 协调器和模型应该从 NSObject 继承吗?
- google-apps-script - 如何根据列标准将工作表中的行附加到 GoogleSheets 中的另一个工作表
- c# - 在 Asp.Net MVC 中为 Authorize 属性存储用户列表的最佳方法是什么?
- python - 将包上传到 PyPi - 但无法访问任何模块?
- entity-framework - CS7036:没有给出与所需的形式参数相对应的参数
- python - 有哪些评估聚类相似性的方法?
- python - 在多个文件中使用但在函数调用后未更改的全局变量(Python)
- python - 如何使用openpyxl提取精确的单元格颜色