我正在制作一个简单的 Web 应用程序前端原型,它需要从我的服务器获取 JSON 数据。服务器本身工作正常——我可以单击链接,JSON 数据就会显示在浏览器中。但以下简单脚本失败了:
fetch('https://x.x.x.x:8000') // MY URL FAILS
// fetch('https://jsonplaceholder.typicode.com/todos/1') // ALTERNATE URL WORKS
.then(function() {
alert("Successful")
})
.catch(function() {
alert("Failure")
});
Run Code Online (Sandbox Code Playgroud)
我对这种前端工作(以及一般的 Javascript)完全陌生,所以我可能会忽略一个明显的原因,但我想到的两个是
这些可能的解释中的第一个似乎更有可能。
访问网页会产生一堆错误,这些错误对我来说没有任何意义(除了找不到图标):
我会暂时在下面的评论中发布完整的 URL,以防其他人想看看会发生什么,但一旦提出可行的解决方案,我就会将其删除。
我有一些代码在大约一年前使用pyplot工作得非常好; 我plt.plot(x,y)使用对数y轴绘制了一个绘图,并用自定义集替换了y轴刻度和刻度标签,如下所示:
# set the axis limits
Tmin = -100 # min temperature to plot
Tmax = 40 # max temperature
Pmin = 100 # min pressure
Pmax = 1000 # max pressure
plt.axis([Tmin, Tmax, Pmax, Pmin])
# make the vertical axis a log-axis
plt.semilogy()
# make a custom list of tick values and labels
plist = range(Pmin,Pmax,100)
plabels = []
for p in plist:
plabels.append(str(p))
plt.yticks(plist,plabels)
Run Code Online (Sandbox Code Playgroud)
在最近将我的python安装更新到当前版本的miniconda之后,我现在发现虽然新标签仍然出现,但它们被matplotlib的科学记谱法的默认标签部分覆盖.因此看起来,虽然上面的代码用于替换默认的刻度和标签,但它现在只是增加了它们.
我该怎样做才能重新获得理想的行为?为什么它首先改变了?
我编写了一个Python函数,用于计算大数(N~10 ^ 3)粒子之间的成对电磁相互作用,并将结果存储在NxN complex128 ndarray中.它运行,但它是较大程序中最慢的部分,当N = 900 [校正]时需要大约40秒.原始代码如下所示:
import numpy as np
def interaction(s,alpha,kprop): # s is an Nx3 real array
# alpha is complex
# kprop is float
ndipoles = s.shape[0]
Amat = np.zeros((ndipoles,3, ndipoles, 3), dtype=np.complex128)
I = np.array([[1,0,0],[0,1,0],[0,0,1]])
im = complex(0,1)
k2 = kprop*kprop
for i in range(ndipoles):
xi = s[i,:]
for j in range(ndipoles):
if i != j:
xj = s[j,:]
dx = xi-xj
R = np.sqrt(dx.dot(dx))
n = dx/R
kR = kprop*R
kR2 = kR*kR …Run Code Online (Sandbox Code Playgroud) 几天前,我启动了一个脚本,利用 scipy.signal.correlate2d 来计算 4096x4096 图像的二维自相关。确切的调用是
zauto = signal.correlate2d(image, image, mode='full', boundary='wrap')
Run Code Online (Sandbox Code Playgroud)
三天后,它仍在运行,看不到尽头。我最终意识到它一定是在进行逐个元素的强力卷积,这个过程与 N^2 一起使用,因此 4096^4 = 281 万亿次乘法和加法。
与此同时,我最终发现,通过对图像进行二维 FFT,将其转换为二维功率谱,然后进行逆 FFT,可以获得所需的结果;IE,
image -= np.mean(image) # remove constant bias
zfft = np.fft.fft2(image) # take 2-D FFT (complex)
zpower = zfft*np.conjug(zfft) # convert to power spectrum
zauto = np.real(np.ifft2(zpower)) # take inverse FFT
zauto /= zauto[0,0] # normalize
Run Code Online (Sandbox Code Playgroud)
上述几行只需不到一分钟即可完成。
我的问题:为什么 scipy.signal.correlate2d 不至少包含在可行的情况下使用更有效的算法的选项,而不是让用户发现它根本无法在更大的图像上使用的困难方式?
下面的代码完全符合我的要求,即计算向量元素之间差异的平方和(本例中长度为3),其中我有一个长序列(此处限制为5).所需的结果显示在底部.但由于两个原因,实施感觉很糟糕:
1)需要添加一个幻像维度,将形状从(5,3)改为(5,1,3)以避免广播问题,以及
2)显然需要一个明确的'for'循环,我敢肯定,为什么需要花费数小时来执行我更大的数据集(一百万个长度为2904的向量).
是否有更高效和/或pythonic的方法来实现相同的结果?
a = np.array([[ 4, 2, 3], [-1, -5, 4], [ 2, 1, 4], [-5, -1, 4], [6, -3, 3]])
a = a.reshape((5,1,3))
m = a.shape[0]
n = a.shape[2]
d = np.zeros((n,n))
for i in range(m):
c = a[i,:] - np.transpose(a[i,:])
c = c**2
d += c
print d
[[ 0. 118. 120.]
[ 118. 0. 152.]
[ 120. 152. 0.]]
Run Code Online (Sandbox Code Playgroud) 从下面的示例中可以看出,我的 LaTeX 书在自动生成的目录中的两位数章节编号和章节标题之间没有留出足够的空间。我似乎记得有一种方法可以为所有条目添加额外的空间,但我在网上找不到它。
[编辑]为了回应下面的评论,这里有一个最小的工作示例:
\documentclass{book}
\begin{document}
\tableofcontents
\chapter{Chapter}
\chapter{Chapter}
\setcounter{chapter}{10}
\chapter{Chapter}
\section{Section}
\section{Section}
\setcounter{section}{10}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\setcounter{subsection}{10}
\subsection{Subsection}
\subsection{Subsection}
\chapter{Chapter}
\end{document}
Run Code Online (Sandbox Code Playgroud) 我有一个 np.array 观测值 z,其中 z.shape 是 (100000, 60)。我想有效地计算 100000x100000 相关矩阵,然后将那些 > 0.95 的元素的坐标和值写入磁盘(这只是总数的一小部分)。
我的暴力版本如下所示,但毫不奇怪,非常慢:
for i1 in range(z.shape[0]):
for i2 in range(i1+1):
r = np.corrcoef(z[i1,:],z[i2,:])[0,1]
if r > 0.95:
file.write("%6d %6d %.3f\n" % (i1,i2,r))
Run Code Online (Sandbox Code Playgroud)
我意识到,使用 np.corrcoef(z) 在一次操作中可以更有效地计算相关矩阵本身,但内存需求很大。我还知道,可以将数据集分解为块并一次计算相关矩阵的一小部分,但对其进行编程并跟踪索引似乎不必要地复杂。
是否有另一种方法(例如,使用 memmap 或 pytables)既易于编码又不会对物理内存提出过多要求?
我想在 Raspberry Pi(或者,就此而言,任何基于 Unix/Linux 的计算机)上运行一个 Python 程序,它可以有效地将整个屏幕变成一个画布,并允许我在其上实时绘制文本和图形对象。我理想地希望这也能自动隐藏桌面上的所有其他内容并消除窗口框架和任务栏,类似于以全屏模式播放视频(使用 ESC 退出)。
到目前为止,我的研究表明 Tkinter/Canvas 将是最简单的解决方案。但是,虽然我在网上找到了一些例子来完成我上面描述的部分内容,但我无法将这些部分放在一起完成所有工作的形式。我之前没有使用 Tkinter 的经验也无济于事。
如果有人能指出我所描述的设置的最小工作示例,我将不胜感激。
python ×5
numpy ×3
arrays ×1
correlation ×1
cython ×1
fetch ×1
https ×1
javascript ×1
kiosk ×1
large-data ×1
latex ×1
matplotlib ×1
raspberry-pi ×1
scipy ×1
tkinter ×1