当前位置: 首页 > 面试题库 >

使用numpy的Python差异未产生预期的输出

微生良策
2023-03-14
问题内容

因此,我正在进行一些数值计算。我已经计算了一个return_times只能通过数字计算的函数()的100,000个点,现在想使用来推导它numpy.gradient。据我了解(doc),对于f(x),我可以给出以下参数:numpy.gradient(arr_of_fx_datapoints, arr_of_their_x_values)使它起作用。这就是我(打算做的)事情。

除非它不起作用。结果到处几乎(但不完全)为零。该错误由下面的代码摘要重现(sin ^ 2(x)的形状类似于我的原始函数):

import matplotlib.pyplot as plt
import numpy as np

def find_times(t_arr):
    return np.power(np.sin(t_arr), 2)

t_0 = 0
t_max = np.pi-1E-10
datapoints = 100000

dt = (t_max - t_0) / datapoints
t_points = np.arange(t_0, t_max, dt, dtype=np.float64)
return_times = find_times(t_points)
gd = np.gradient(return_times, t_points)
plt.plot(t_points, gd)
plt.plot(t_points, return_times)
plt.show()

结果令人失望:
在此处输入图片说明

如果我打印gd,则表明它确实不是完全为零:

[             inf   6.28318530e-05   6.28318529e-05 ...,  -1.25666419e-09
  -6.28326813e-10  -3.14161265e-10]

所以:我想念什么?用Python进行数值衍生的最终正确方法是什么?

环境:Linux Mint 18.2 OS,Geany编辑器,NumPy 1.11.0。


问题答案:

文档没有提及它,但是坐标数组支持是非常新的NumPy 1.13。在以前的NumPy版本中,只能为每个维度指定固定的标量阶跃值。

NumPy 1.12可以检查非标量步骤,但是您正在使用的NumPy 1.11不会注意到数组值的输入,并且通过尝试将数组视为步骤而无提示地执行了错误的操作。



 类似资料:
  • 我必须在一个学校项目的“slice”对象上实现一个快速排序算法,该slice对象是一个具有: “数据”字段(要排序的整个数组) “左”和“右”字段(表示数组中切片子部分的索引) 分区函数代码如下: 该函数的doctests不会失败,但是当调用quicksort递归函数时,分区函数的行为不会像预期的那样。quicksort函数的代码如下: 编辑:正如下面的一条评论所指出的,我简直忘了更新piv的值,

  • 问题内容: 我正在尝试为使用情况统计信息生成报告。以下是我在数组中存储的示例数据,这是从Mysql表中获取的。如何实现一个逻辑,即如果用户闲置超过30分钟,没有使用过系统,否则计算使用时间的平均时间。 问题答案: 我想这就是你想要的。它遍历列表,计算每个条目与上一个条目之间的差异。如果差异大于或等于30分钟,它将忽略它。如果少于30分钟,则会将其添加到该用户的总使用量中。(我假设所有时间戳都是针对

  • 问题内容: 是否有任何Java库可以接受两个字符串,并按照* nix diff命令返回格式化输出的字符串? 例如喂 和 作为输入,它会给你 与将文件传递到完全一样 我找到了这个问题,它为通用库提供了一些很好的建议,可以为您提供程序化输出,但是我想要直接的字符串结果。 我可以直接作为系统调用来调用,但是这个特定的应用程序将在UNIX和Windows上运行,而且我不确定环境是否实际可用。 问题答案:

  • 问题内容: 据我了解,python将输出输出,但显然并非总是如此。例如: 在ipython中: 在python中: ipython对输出应用什么转换? 问题答案: IPython使用代替方法或标准模块来打印输出。 模块提供了在后台使用的两个功能。 函数返回对象的字符串表示形式: 函数打印对象的表示形式: IPython使用其自己的漂亮打印机,因为标准Python模块“不允许开发人员提供自己的漂亮打

  • 片段着色器 结果是一个绿色屏幕,里面有一个黑色矩形。但我希望长方形改为蓝色。我的代码有问题吗?

  • 之间有什么区别 在Pythonnumpy.asarray作业?第一行的[]辫子是什么意思? 非常感谢。