小编Jan*_*Jan的帖子

哪个Python在Windows上用于Numpy和朋友?

对于研究相关的Python程序,我需要Python 2.6(或2.7),numpy,scipy和matplotlib.偶尔,我将使用其他模块,如mayavi2numexpr.

问题中的程序将在(Ubuntu)Linux和Windows之间交换,并且可以修改为跨平台工作.Windows端的设置应尽可能与Linux设置类似.不需要与COM,.NET或Windows操作系统集成.

我知道以下选项:

哪一个能为我提供最有效的设置?它们会有什么不同?

python windows installer module numpy

8
推荐指数
2
解决办法
7079
查看次数

离散傅里叶变换:如何正确使用ffthift与fft

我想数值计算numpy数组Y上的FFT.为了测试,我使用高斯函数Y = exp(-x ^ 2).(符号)傅立叶变换是Y'=常数*exp(-k ^ 2/4).

import numpy
X = numpy.arange(-100,100)
Y = numpy.exp(-(X/5.0)**2)
Run Code Online (Sandbox Code Playgroud)

天真的方法失败了:

from numpy.fft import *
from matplotlib import pyplot

def plotReIm(x,y):
    f = pyplot.figure()
    ax = f.add_subplot(111)
    ax.plot(x, numpy.real(y), 'b', label='R()')
    ax.plot(x, numpy.imag(y), 'r:', label='I()')
    ax.plot(x, numpy.abs(y), 'k--', label='abs()')
    ax.legend()


Y_k = fftshift(fft(Y))
k = fftshift(fftfreq(len(Y)))
plotReIm(k,Y_k)
Run Code Online (Sandbox Code Playgroud)

实数(Y_k)在正值和负值之间跳跃,这对应于跳跃阶段,这在符号结果中不存在.这当然是不可取的.(结果在技术上是正确的,因为abs(Y_k)给出了预期ifft(Y_k)为Y的幅度.)

这里,函数fftshift()使数组k单调递增并相应地改变Y_k.通过对两个向量应用此操作,不会更改对zip(k,Y_k).

此更改似乎可以解决此问题:

Y_k = fftshift(fft(ifftshift(Y)))
k = fftshift(fftfreq(len(Y)))
plotReIm(k,Y_k)
Run Code Online (Sandbox Code Playgroud)

如果需要单调Y和Y_k,这是使用fft()函数的正确方法吗?

以上的反向操作是:

Yx = fftshift(ifft(ifftshift(Y_k)))
x = fftshift(fftfreq(len(Y_k), k[1] - k[0]))
plotReIm(x,Yx) 
Run Code Online (Sandbox Code Playgroud)

对于这种情况,文档清楚地指出Y_k必须与fft()和fftfreq()的输出进行排序,我们可以通过应用ifftshift()来实现.

那些问题一直困扰着我很长时间:fft()和ifft()的输出和输入数组是否总是如此a[0] should …

python numpy fft

6
推荐指数
1
解决办法
2万
查看次数

FFT 和逆 FFT 之间有什么实际区别吗?

FFT 库(例如 FFTW 或 numpy.fft)通常提供两个函数fft()ifft()(及其用于实值输入的特殊版本)。这些函数的定义似乎是这样的

ifft(fft(X)) == X
Run Code Online (Sandbox Code Playgroud)

fft(X) == constant_factor * reverse(ifft(X))
Run Code Online (Sandbox Code Playgroud)

在复杂输入之间进行选择ifft()和操作时,是否有任何实际或技术原因需要考虑?虽然(信号、时域或空间域)和(频谱、频域)fft()的解释不同,但它在计算上重要吗?Xfft(X)

fft fftw

5
推荐指数
1
解决办法
6226
查看次数

在不更改实际绘图的情况下设置 matplotlib 颜色条的限制

我想创建一个伪彩色图(例如contourcontourf)和一个颜色条。出于实际原因,我希望颜色条的范围与底层可映射不同。

在下面的示例中,数据 Z 的范围从 0 到 10000,映射到颜色图。颜色条的范围是相同的。

import numpy
from matplotlib import pyplot

X = numpy.arange(100)
Y = numpy.arange(100)
Z = numpy.arange(100**2).reshape((100,100))

f = pyplot.figure()
ax = f.gca()
cf = ax.contourf(X,Y,Z,100)
cbar = f.colorbar(cf, ticks=[3000,4000,5000,6000])

pyplot.show()
Run Code Online (Sandbox Code Playgroud)

阴谋

现在,我想“放大”颜色条,即生成一个范围从 3000 到 6000 的颜色条。这个新的颜色条仍将作为图例并为每个刻度提供适当的颜色(3000 = 蓝色,6000 = 黄色)。既不实现cbar.set_clim()也不cf.set_clim()实现这一点。

matplotlib contour colorbar

5
推荐指数
1
解决办法
6313
查看次数

$$ FOO在bash中做什么(在使用epm构建的deb包中)?

在命令行上,我得到这个:

$ FOO=foo
$ echo $FOO
foo
$ echo $$FOO
11971FOO
Run Code Online (Sandbox Code Playgroud)

这里,$$按预期解析为shell的PID,并逐字打印"FOO".

现在,尝试理解和调试一些脚本,我发现以下内容:

#!/bin/bash
FILE1=/path/to/file/1
FILE2=/path/to/file/2
echo $$FILE1 >> $$FILE2
Run Code Online (Sandbox Code Playgroud)

有问题的脚本源自Debian软件包的安装后脚本.这应该在它运行之前进行预处理吗?

更新:该脚本是使用epm构建的包的一部分,并通过以下指令读取:

%postinstall <script.sh
Run Code Online (Sandbox Code Playgroud)

在生成的deb包中,postinst脚本显示:

#!/bin/bash
FILE1=/path/to/file/1
FILE2=/path/to/file/2
echo $FILE1 >> $FILE2
Run Code Online (Sandbox Code Playgroud)

因此,处理由epm或dpkg完成.

bash deb epm

5
推荐指数
1
解决办法
115
查看次数

Presto 是否开箱即用地在内部缓存中间结果?

Presto 有多个连接器。虽然连接器确实实现了读写操作,但从我读过的所有教程来看,它们似乎通常用作仅读取的数据源。例如,netflix在 Amazon S3 上有“10 PB”的数据,并且明确声明 Presto 工作节点上没有使用任何磁盘(也没有 HDFS)。所述用例是“临时交互式”查询。

此外,Amazon Athena 本质上是 S3+Presto,并且具有类似的用例。

我很困惑这如何在实践中发挥作用。显然,您不想每次查询都读取 10 PB 的数据。所以我假设,您希望将一些以前获取的数据保留在内存中,例如数据库索引。然而,由于对数据和查询没有限制,我无法理解这是如何高效的。

用例 1:我经常运行相同的查询,例如在仪表板上显示指标。Presto 是否避免重新扫描已经“已知”的数据点?

用例 2:我正在分析一个大型数据集。每个查询都略有不同,但是存在公共子查询,或者我们过滤到数据的公共子集。Presto 是否从之前的查询中学习并保留中间结果?

或者,如果情况并非如此,是否建议我将中间结果存储在某处(例如 CREATE TABLE AS ...)?

sql presto amazon-athena trino

4
推荐指数
1
解决办法
5160
查看次数

为什么sqlite3无法在Amazon Elastic File System上运行?

当我尝试sqlite3在EFS目录上创建基础时,这会导致错误:

$ sqlite3 foo.db SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .log stderr sqlite> CREATE TABLE foo (int bar); Error: disk I/O error

有问题的Sqlite3数据库应仅用于故事元数据,并且不经常更新.不需要并发访问.但是,如果创建数据库的进程终止,则需要在不同的主机上重新启动该进程,并继续执行先前实例退出的位置.

亚马逊声称EFS是一个"文件系统,可以通过文件系统接口(使用标准操作系统文件I/O API)访问Amazon EC2实例,并且支持完整文件系统访问语义(例如强一致性和文件锁定) )".因此,我认为它适合手头的任务.

挂载选项/etc/fstab包括:

eu-west-1a.fs-ID.efs.eu-west-1.amazonaws.com://efs nfs4 nfsvers = 4.1,rsize = 1048576,wsize = 1048576,hard,timeo = 600,retrans = 2 0 0

据我所知,通常不鼓励将数据库放在NFS上.但是,我相信,鉴于亚马逊和SQLite使用的语言,开发人员将继续尝试.

linux sqlite nfs amazon-web-services

3
推荐指数
2
解决办法
1883
查看次数