我有一组模拟数据,我想在n维中找到最低的斜率.数据的间距沿着每个维度是恒定的,但不是全部相同(为了简单起见,我可以改变它).
我可以忍受一些数字不准确,尤其是边缘.我非常希望不生成样条并使用该衍生物; 只要原始价值就足够了.
可以numpy
使用该numpy.gradient()
函数计算一阶导数.
import numpy as np
data = np.random.rand(30,50,40,20)
first_derivative = np.gradient(data)
# second_derivative = ??? <--- there be kudos (:
Run Code Online (Sandbox Code Playgroud)
这是关于拉普拉斯与粗麻布矩阵的评论; 这不再是一个问题,而是为了帮助理解未来的读者.
我使用2D函数作为测试用例来确定阈值以下的"最平坦"区域.以下图片显示了使用以下最小值second_derivative_abs = np.abs(laplace(data))
和最小值之间的结果差异:
second_derivative_abs = np.zeros(data.shape)
hess = hessian(data)
# based on the function description; would [-1] be more appropriate?
for i in hess[0]: # calculate a norm
for j in i[0]:
second_derivative_abs += j*j
Run Code Online (Sandbox Code Playgroud)
色标表示功能值,箭头表示一阶导数(梯度),红点表示最接近零的点,红线表示阈值.
数据的生成器函数是( 1-np.exp(-10*xi**2 - yi**2) )/100.0
使用生成的xi,yi生成的np.meshgrid
.
拉普拉斯:
黑森州:
我正在尝试使用 TeXLipse 将 Eclipse 及其所有强大功能设置为我的 Latex 编辑器。一切似乎都工作正常(用SumatraPDF测试),但 Pdf4Eclipse ,我完全想要“边写边更新”的感觉。
到目前为止,我通过询问 Google 了解到的是: Pdf4Eclipse 不会被选为 Texlipse 中的查看器,而应该通过单击将其选为 Eclipse 中的默认查看器:
窗口 > 首选项:常规 > 编辑器 > 文件关联;选择 *.pdf 并选择 Pdf4Eclipse - 但它不在那里。
虽然它已安装,但它在首选项设置中有一个条目。所以问题是:为什么它不存在,我做错了什么)-:
编辑:错误日志(请注意我最初的学习曲线和最后绝望的垃圾邮件安装命令):
!SESSION 2012-10-08 18:42:10.267 -----------------------------------------------
eclipse.buildId=M20120914-1800
java.version=1.7.0_07
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Command-line arguments: -os win32 -ws win32 -arch x86_64
!ENTRY net.sourceforge.texlipse 4 4 2012-10-08 18:44:59.172
!MESSAGE Could not start previewer 'itexmac'. Please make sure you have entered the correct path and filename in …
Run Code Online (Sandbox Code Playgroud) 我有一个类型的卷积积分:
为了在数字上解决这个问题,我想用numpy.convolve()
.现在,正如您在在线帮助中看到的那样,卷积从-infinity到+ infinity正式完成,意味着数组完全相互移动以进行评估 - 这不是我需要的.我显然需要确保选择卷积的正确部分 - 你能否确认这是正确的方法,或者告诉我如何正确地做(也许更重要)为什么?
res = np.convolve(J_t, dF, mode="full")[:len(dF)]
Run Code Online (Sandbox Code Playgroud)
J_t是一个分析函数,我可以根据需要评估多个点,dF是测量数据的衍生物.对于我选择的这种尝试,len(J_t) = len(dF)
因为根据我的理解,我不需要更多.
谢谢你的想法,一如既往,感谢你的帮助!
背景信息(对于那些可能感兴趣的人)
这些类型的积分可用于评估物体的粘弹性行为(或电压变化期间电路的响应,如果您对此主题更熟悉).对于粘弹性,J(t)是蠕变柔量函数,F(t)可以是随时间推移的偏应变,然后该积分将产生偏应力.如果你现在有例如以下形式的J(t):
J_t = lambda p, t: p[0] + p[1]*N.exp(-t/p[2])
Run Code Online (Sandbox Code Playgroud)
用p = [J_elastic, J_viscous, tau]
这将是"著名的" 标准线性固体.积分限制是测量的开始t_0 = 0和感兴趣的时刻t.
我遇到了图例和错误栏绘图命令的相当奇怪的行为。我将Python xy 2.7.3.1与结合使用matplotlib 1.1.1
,下面的代码示例了观察到的行为:
import pylab as P
import numpy as N
x1=N.linspace(0,6,10)
y1=N.sin(x1)
x2=N.linspace(0,6,5000)
y2=N.sin(x2)
xerr = N.repeat(0.01,10)
yerr = N.repeat(0.01,10)
#error bar caps visible in scatter dots
P.figure()
P.subplot(121)
P.title("strange error bar caps")
P.scatter(x1,y1,s=100,c="k",zorder=1)
P.errorbar(x1,y1,yerr=yerr,xerr=xerr,color="0.7",
ecolor="0.7",fmt=None, zorder=0)
P.plot(x2,y2,label="a label")
P.legend(loc="center")
P.subplot(122)
P.title("strange legend behaviour")
P.scatter(x1,y1,s=100,c="k",zorder=100)
P.errorbar(x1,y1,yerr=yerr,xerr=xerr,color="0.7",
ecolor="0.7",fmt=None, zorder=99)
P.plot(x2,y2,label="a label", zorder=101)
P.legend(loc="center")
P.show()
Run Code Online (Sandbox Code Playgroud)
这产生了这个情节:
如您所见,错误栏上限正在覆盖散点图。如果我增加zorder足够多,这种情况将不再发生,但情节线将覆盖图例。我怀疑问题与matplotlib的zorder问题有关。
快速,肮脏,hacky解决方案也受到赞赏。
编辑(感谢@nordev):期望的结果如下:
根据您的答案调整zorder:
P.legend(zorder=100)
-> self.legend_ = mlegend.Legend(self, handles, labels, **kwargs)
TypeError: __init__() got …
我有一个来自测量的自动生成的信息文件.它由二进制和人类可读部分组成.我想提取一些非二进制元数据.对于某些文件,我无法访问元数据,因为readlines()
它不会产生整个文件.我猜这个文件包含一些EOF字符.我可以在记事本++中打开文件而不会出现问题.
这个问题的一个可能的解决方案是读取文件二进制文件并在之后将其解析为char,同时删除EOF字符.无论如何,我想知道是否有更优雅的方式呢?
编辑:问题是正确的downvoted,我应该提供代码.我实际上用
f = open(fname, 'r')
raw = f.readlines()
Run Code Online (Sandbox Code Playgroud)
然后继续浏览列表.存在的EOF字符(取决于操作系统)似乎会导致我观察到的破坏.我将接受使用二进制'rb'
标志的答案.顺便说一句,这是一个令人印象深刻的响应时间!( - :
python ×4
numpy ×2
derivative ×1
eclipse ×1
latex ×1
matplotlib ×1
numeric ×1
pdf ×1
python-2.7 ×1
readlines ×1