我想对一个函数进行傅里叶变换psi(x),将其乘以 k 空间函数exp(-kx^2-ky^2),然后将乘积逆傅里叶变换回 x 空间。
但是我的 x 空间和 k 空间网格位于中心,并且我知道我需要fftshift并ifftshift正确实现我的 k 空间乘法。但我不明白它们是如何工作的,所以我不知道按照什么顺序来实现它们。有人可以告诉我我在这里做得是否正确吗?
import scipy.fftpack as spfft
import numpy as np
#Create a centred k-space grid]
kxmax, kymax = 10,10
kxgrid = np.linspace(-kxmax/2, kxmax/2, NX)
kygrid = np.linspace(-kymax/2, kymax/2, NY)
KX, KY = np.meshgrid(kxgrid, kygrid, indexing='xy')
psi = spfft.ifft2(spfft.fftshift(np.exp(-(KX**2 + KY**2)) * spfft.fftshift(spfft.fft2(psi))))
Run Code Online (Sandbox Code Playgroud) 我正在使用标准pandas.df.plot()函数在数据框中绘制两列。出于某种原因,x 轴值和 xlabel 不可见!似乎也没有选项可以在函数中打开它们(参见https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html)。
有人知道发生了什么,以及如何纠正它?
import matplotlib.cm as cm
import pandas as pd
ax1 = df.plot.scatter(x='t', y='hlReference', c='STEP_STRENGTH', cmap=cm.autumn);
Run Code Online (Sandbox Code Playgroud)
我正在使用Scipy做一个优化问题,我正在采用一个顶点和大小的NNxNN连接的扁平网络,连接它的两侧(即,使其周期性),并最小化能量函数,以便它卷曲形成一个圆筒.(见下面的链接.)
因为我具备的功能energy(xyz-position)和它的坡度,我决定用在SciPy的手册推荐的三种方法- ,,Newton-CG - ,并比较他们是如何进行的.BFGSL-BFGS-B
我所说的优化功能如下,我只是更换'Newton-CG'与'BFGS'和'L-BFGS-B'根据情况:
from scipy.optimize import minimize
res = minimize(energy, xyzInit, method='Newton-CG', jac = energy_der, options={'disp': True})
Run Code Online (Sandbox Code Playgroud)
我发现了以下一般行为(我给出的输出数据NN=9,对应于一个3*9^2=243参数空间) -
BFGS系统地未能找到正确的最小值(对于低值NN),并且根本没有收敛到大的值NN.有关最终结果,请参阅https://plot.ly/~apal90/162/.
NN=9
Method: BFGS
Warning: Desired error not necessarily achieved due to precision loss.
Current function value: 204.465912
Iterations: 1239
Function evaluations: 1520
Gradient evaluations: 1508
Time taken for minimisation: 340.728140116
Run Code Online (Sandbox Code Playgroud)Newton-CG发现小的正确的最小值NN(<= 8),但是从NN …
我有一个Plotly Scatter3d()图,我想在其中一些之间画线。从物理上讲,我有一个网络,其中有一些节点通过键连接,我想绘制这些键。我该怎么办?
Scatter3d()带有一个mode='lines+markers'仅使它成为点和线散点图的选项,而不是默认的仅点图。那不是我想要的。我想提供一个xyz坐标对列表,并且我想在末尾收集行。
这是我绘制简单Scatter3d()图的功能:
def Splot3dPlotly(xyz):
'''
3D scatter plot using Plotly.
:param xyz: (NPx3) array of xyz positions
:return: A Plotly figure that can now be plotted as usual.
'''
xyz = np.reshape(xyz, (int(xyz.size/3), 3))
NN = int(sqrt(xyz.shape[0]))
trace1 = go.Scatter3d(
x=xyz[:,0],
y=xyz[:,1],
z=xyz[:,2],
mode = 'markers', # 'lines+markers',
marker=dict(color=range(NN*NN), colorscale='Portland')
)
data = [trace1]
layout = go.Layout(
margin=dict(
l=0,
r=0,
b=0,
t=0
)
)
fig = go.Figure(data=data, layout=layout)
return fig
Run Code Online (Sandbox Code Playgroud) 所以,我有两个清单:
x =[170 169 168 167 166 165 183 201 219 237 255 274 293 312 331 350]
y =[201,168]
Run Code Online (Sandbox Code Playgroud)
我想写一个条件if语句,只有当所有内容y都在时才是真的x.我该怎么做呢?
EG - assert(y[0] in x)和assert(y[a] in x)两个给True,但assert(y in x)给人False.同样,assert( any(y) in x )也会引发错误.
python ×5
scipy ×2
conditional ×1
fft ×1
if-statement ×1
matplotlib ×1
optimization ×1
pandas ×1
plot ×1
plotly ×1