小编end*_*ith的帖子

Python/SciPy的峰值查找算法

我可以通过查找一阶导数或其他东西的零交叉来自己编写一些东西,但它似乎是一个通用的函数,可以包含在标准库中.谁知道一个?

我的特定应用是2D阵列,但通常它将用于在FFT等中查找峰值.

具体而言,在这些类型的问题中,存在多个强峰,然后是许多较小的"峰值",这些"峰值"仅由应该忽略的噪声引起.这只是例子; 不是我的实际数据:

一维峰值:

带峰值的FFT输出

二维峰值:

具有圆圈峰值的Radon变换输出

峰值寻找算法将找到这些峰值的位置(不仅仅是它们的值),理想情况下会找到真正的样本间峰值,而不仅仅是具有最大值的索引,可能使用二次插值等.

通常,您只关心一些强峰,因此它们要么被选中,要么是因为它们高于某个阈值,要么是因为它们是有序列表的前n个峰值,按振幅排列.

正如我所说,我知道如何自己写这样的东西.我只是问是否有一个已知的功能或包已知可以正常工作.

更新:

翻译了一个MATLAB脚本,它适用于1-D案例,但可能更好.

更新更新:

sixtenbe 为1-D案例创造了更好的版本.

python fft scipy hough-transform

123
推荐指数
6
解决办法
10万
查看次数

如何将NumPy数组规范化到一定范围内?

在对音频或图像阵列进行一些处理之后,需要在一个范围内对其进行标准化,然后才能将其写回文件.这可以这样做:

# Normalize audio channels to between -1.0 and +1.0
audio[:,0] = audio[:,0]/abs(audio[:,0]).max()
audio[:,1] = audio[:,1]/abs(audio[:,1]).max()

# Normalize image to between 0 and 255
image = image/(image.max()/255.0)
Run Code Online (Sandbox Code Playgroud)

是否有一个不那么详细,方便的功能方法来做到这一点?matplotlib.colors.Normalize()似乎没有相关性.

python arrays numpy scipy convenience-methods

116
推荐指数
7
解决办法
22万
查看次数

如何在Spyder/IPython/matplotlib中再次获得交互式图?

我在Windows 7中从Python(x,y)2.7.2.3升级到2.7.6.0(很高兴看到我最终可以function_name?再次在Object Inspector中输入并查看docstring)但是现在绘图不起作用了以前.

以前(Spyder 2.1.9,IPython 0.10.2,matplotlib 1.2.1),例如,当我绘制这个脚本时,它会在交互式窗口中并排绘制子图:

在此输入图像描述

现在(Spyder 2.2.5,IPython 1.2.0,Matplotlib 1.3.1)当我尝试绘制事物时,它将子图作为微小的内联PNG,这是IPython中的一个变化:

微小的内联PNG

所以我进入选项并发现了这个:

图形选项

这似乎是说我可以将旧的交互式图重新打开,并且4个子图并排显示,但是当我切换到"自动",并尝试绘制某些内容时,它什么也没做.根本没有阴谋.

如果我关掉这个下拉Qt的,或取消选中"激活的支持",只绘出了第一次要情节,或它的一部分,然后停止:

在此输入图像描述

如何在一个可以与之交互的图中获得4个并排子图的旧行为?

python matplotlib ipython spyder

83
推荐指数
4
解决办法
20万
查看次数

Python DictWriter编写UTF-8编码的CSV文件

  1. 我有一个包含unicode字符串的字典列表.
  2. csv.DictWriter 可以将字典列表写入CSV文件.
  3. 我希望CSV文件以UTF8编码.
  4. csv模块无法处理将unicode字符串转换为UTF8.
  5. csv模块文档具有的一切转换为UTF-8的例子:

    def utf_8_encoder(unicode_csv_data):
        for line in unicode_csv_data:
            yield line.encode('utf-8')
    
    Run Code Online (Sandbox Code Playgroud)
  6. 它也有一个UnicodeWriter类.

但是......我该如何DictWriter使用这些?难道他们不必在它的中间注入自己,以便在将它们写入文件之前捕获反汇编的字典并对它们进行编码吗?我不明白.

python csv unicode utf-8

51
推荐指数
4
解决办法
5万
查看次数

Python中的可逆STFT和ISTFT

是否有任何通用形式的短时傅里叶变换,其中相应的逆变换内置于SciPy或NumPy或其他任何东西?

specgram在matplotlib中有pyplot 函数,它调用ax.specgram()哪些调用mlab.specgram()调用_spectral_helper():

#The checks for if y is x are so that we can use the same function to
#implement the core of psd(), csd(), and spectrogram() without doing
#extra calculations.  We return the unaveraged Pxy, freqs, and t.
Run Code Online (Sandbox Code Playgroud)

这是一个辅助函数,它实现了204#psd,csd和谱图之间的通用性.它 并不意味着在mlab之外使用

不过,我不确定这是否可以用来做STFT和ISTFT.还有什么,或者我应该翻译这些MATLAB函数吗?

我知道如何编写自己的临时实现; 我只是在寻找功能齐全的东西,它可以处理不同的窗口函数(但是有一个合理的默认值),完全可以与COLA windows(istft(stft(x))==x)完全颠倒,由多人测试,没有一个一个错误,处理结束和零填充,实际输入的快速RFFT实现等.

python signal-processing fft scipy

49
推荐指数
3
解决办法
3万
查看次数

如果对象也有其他类,Beautiful Soup也找不到CSS类

如果网页上有<div class="class1"><p class="class1">,然后soup.findAll(True, 'class1')就会发现他们两个.

<p class="class1 class2">但是,如果它有,它将无法找到.如何找到具有某个类的所有对象,无论它们是否还有其他类?

python screen-scraping beautifulsoup

40
推荐指数
3
解决办法
1万
查看次数

在Python中弹出图形对话框的最简单的跨平台方法是什么?

我想用最简单的方法在Python脚本中弹出简单的对话框.理想情况下,解决方案将:

  • 适用于Windows,OS X,Gnome,KDE
  • 看起来像任何操作系统上的本机对话框
  • 需要最少的代码

要弹出一个简单的标准对话框,只需要很少的代码.基本上你只是说"用这个文本弹出标准对话框",或者"弹出一个带有问题x的对话框并将响应反馈到变量y".

这适用于在命令行上运行的简单脚本.我不想知道GUI框架或者必须设置代码"启动GUI线程,注册事件处理程序,配置一些窗口属性,运行循环"等等.我不想设置窗户或之后关闭窗户.我把文本放在窗口和/或按钮和/或复选框中,它返回用户点击的内容.其他一切都应该自动处理.例如:

message_box('File conversion complete')
Run Code Online (Sandbox Code Playgroud)

对于带有"确定"按钮的标准对话框,或

balloon_tip('File conversion complete')
Run Code Online (Sandbox Code Playgroud)

对于系统托盘弹出气球,或

format = button_box('Which file format do you want?', 'JPG', 'PNG')
Run Code Online (Sandbox Code Playgroud)

然后他们按下两个按钮中的一个,然后format等于'JPG',或

response = text_query('What would you like to name the file?')
Run Code Online (Sandbox Code Playgroud)

然后在他们输入框并输入Ok后,response现在等于'bananas.txt'.无需其他代码.没有丑陋的命令行提示穷人.

我列出了Zenity和EasyGUI作为示例答案,因为它们与我想要的相似,但并不完美.

[ 以前在Python论坛上问过 ]

python dialog cross-platform zenity

38
推荐指数
8
解决办法
3万
查看次数

具有隐藏窗口的跨平台子流程

我想在后台打开一个进程并与之交互,但这个进程在Linux和Windows中都应该是不可见的.在Windows中,您必须使用STARTUPINFO执行某些操作,而这在Linux中无效:

ValueError:仅在Windows平台上支持startupinfo

有没有比为每个操作系统创建单独的Popen命令更简单的方法?

if os.name == 'nt':
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    proc = subprocess.Popen(command, startupinfo=startupinfo)
if os.name == 'posix':
    proc = subprocess.Popen(command)    
Run Code Online (Sandbox Code Playgroud)

python linux windows subprocess cross-platform

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

Firefox链接到本地​​或网络页面不起作用

我有一个.asp应用程序,其中图像文件(.PDF)存储在目录中(由复印机/扫描仪提供).创建的文件名存储在数据库表中.从网页启动查询时,会创建指向该文件的链接.单击时,应显示图像.此功能在Internet Explorer中100%有效.在Firefox中没有这样的运气(我有一些Firefox用户).创建的超链接如下所示file://Server/Scanner/XYZ.pdf

Firefox帮助建议原因是这样的:

本地或网络页面的链接不起作用.作为安全预防措施,Firefox禁止Internet上的站点链接到存储在本地计算环境中的文件.这些文件可能包括计算机上的文件,映射的网络驱动器和UNC网络路径

没有针对变通方法的建议似乎有效(或者我不了解创建图像显示的步骤)任何建议?

pdf firefox unc asp-classic

34
推荐指数
4
解决办法
6万
查看次数

Python:我可以有一个带有命名索引的列表吗?

在PHP中我可以命名我的数组标记,以便我可能有类似的东西:

$shows = Array(0 => Array('id' => 1, 'name' => 'Sesame Street'), 
               1 => Array('id' => 2, 'name' => 'Dora The Explorer'));
Run Code Online (Sandbox Code Playgroud)

这在Python中可行吗?

python arrays

31
推荐指数
6
解决办法
7万
查看次数