小编Veb*_*osa的帖子

Cython和numpy速度

我在我的python程序中使用cython进行相关计算.我有两个音频数据集,我需要知道它们之间的时差.基于开始时间切割第二组,然后滑过第一组.有两个for循环:一个滑动集合,内循环计算该点的相关性.这种方法效果很好,而且足够准确.

问题是使用纯python这需要一分多钟.使用我的cython代码,大约需要17秒.这仍然太多了.您是否有任何提示如何加速此代码:

import numpy as np
cimport numpy as np

cimport cython

FTYPE = np.float
ctypedef np.float_t FTYPE_t

@cython.boundscheck(False)
def delay(np.ndarray[FTYPE_t, ndim=1] f, np.ndarray[FTYPE_t, ndim=1] g):
    cdef int size1 = f.shape[0]
    cdef int size2 = g.shape[0]
    cdef int max_correlation = 0
    cdef int delay = 0
    cdef int current_correlation, i, j

    # Move second data set frame by frame
    for i in range(0, size1 - size2):
        current_correlation = 0

        # Calculate correlation at that point
        for j in range(size2):
            current_correlation …
Run Code Online (Sandbox Code Playgroud)

python numpy cython

16
推荐指数
1
解决办法
4817
查看次数

基准测试django应用程序

我有兴趣测试我的django应用程序的性能,获得逐行性能数据的最佳方法是什么?

注意:谷歌搜索返回许多人对django本身进行基准测试.我不是在寻找django的基准测试,我正在尝试测试我正在编写的django应用程序的性能:)

谢谢!

编辑:通过"逐行"我只是意味着计时单个函数,数据库调用等,以找出瓶颈在非常精细的水平上

python django profiling

14
推荐指数
2
解决办法
3741
查看次数

将基于Sencha Touch的应用程序转变为真正的原生iPhone应用程序?

据我所知,Sencha Touch只是一个javascript库,可让您创建响应多点触控的网站以及您在本机iPhone应用程序中找到的其他功能.所以...你的最终结果是在iPhone上的Safari上访问的,而不是原生的iPhone应用程序.有没有办法将其转换为本机应用程序?

iphone extjs native sencha-touch

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

如何从C创建一个numpy记录数组

在Python方面,我可以创建新的numpy记录数组,如下所示:

numpy.zeros((3,), dtype=[('a', 'i4'), ('b', 'U5')])
Run Code Online (Sandbox Code Playgroud)

我如何从C程序中做同样的事情?我想我必须打电话PyArray_SimpleNewFromDescr(nd, dims, descr),但我如何构建一个PyArray_Descr适合作为第三个参数传递的PyArray_SimpleNewFromDescr

c python numpy

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

大规模伪逆

我想计算一个巨大矩阵的Moore-Penrose伪逆.理想情况下,我想在具有2300万行和1000列的矩阵上进行此操作,但如果需要,我可以通过仅在我的实验的一部分上运行来将行数减少到400万.

显然,将矩阵加载到内存并在其上运行SVD是行不通的. 维基百科指向Krylov子空间方法并提及Arnoldi,Lanczos,Conjugate梯度,GMRES(广义最小残差),BiCGSTAB(biconjugate梯度稳定),QMR(准最小残差),TFQMR(无转置QMR)和MINRES(最小残差) )方法是最好的Krylov子空间方法之一.但我不知道从哪里开始.计算这样一个巨大矩阵的伪逆是否可行?如果是这样,使用哪些算法或软件库?我有一个大型计算集群,所以欢迎并行方法.

这个答案指向R包biglm.那会有用吗?有人用过吗?我通常使用Python,但不介意使用其他语言和工具来完成这项特定任务.

algorithm hpc linear-algebra

8
推荐指数
1
解决办法
1646
查看次数

如何使wx.TextEntryDialog更大,可调整大小

我创建wx.TextEntryDialog如下:

import wx

dlg = wx.TextEntryDialog(self, 'Rules:', 'Edit rules', 
                         style=wx.TE_MULTILINE|wx.OK|wx.CANCEL)
dlg.SetValue(self.rules_text.Value)
if dlg.ShowModal() == wx.ID_OK:
    …
Run Code Online (Sandbox Code Playgroud)

这会导致对话框太小而无法满足我的需求,并且无法调整大小:

小对话框

我的问题是:如何使对话框变大和调整大小? 我尝试添加的标志wx.DEFAULT_DIALOG_STYLEwx.RESIZE_BORDER,但除了曾与点替换文本没有影响:

dlg = wx.TextEntryDialog(self, 'Rules:', 'Edit rules', 
                         style=wx.TE_MULTILINE|wx.OK|wx.CANCEL|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
Run Code Online (Sandbox Code Playgroud)

小而乱码的对话框

python wxwidgets wxpython

8
推荐指数
1
解决办法
4765
查看次数

如果字符串中有非ASCII字符,如何将C字符串(char数组)转换为Python字符串?

我在C程序中嵌入了Python解释器.假设C程序从文件中读取一些字节到char数组和学习(以某种方式),该字节表示以一定的编码文本(例如,ISO 8859-1中,Windows-1252,或UTF-8).如何将此char数组的内容解码为Python字符串?

Python字符串通常应该是类型unicode- 例如,0x93Windows-1252编码的输入变为u'\u0201c'.

我试图使用PyString_Decode,但是当字符串中有非ASCII字符时它总是会失败.这是一个失败的例子:

#include <Python.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
     char c_string[] = { (char)0x93, 0 };
     PyObject *py_string;

     Py_Initialize();

     py_string = PyString_Decode(c_string, 1, "windows_1252", "replace");
     if (!py_string) {
          PyErr_Print();
          return 1;
     }
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误消息是UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in position 0: ordinal not in range(128),表示ascii即使我们windows_1252在调用中指定,也使用编码PyString_Decode.

以下代码通过使用PyString_FromString创建未解码字节的Python字符串,然后调用其decode方法来解决此问题:

#include <Python.h>
#include <stdio.h> …
Run Code Online (Sandbox Code Playgroud)

c python embedding character-encoding

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

数组划分 - 从MATLAB转换为Python

我在MATLAB中有这行代码,由其他人编写:

c=a.'/b
Run Code Online (Sandbox Code Playgroud)

我需要将它翻译成Python.a,b和c都是数组.我目前用于测试代码的维度是:

a:18x1,
b:25x18,

这给了我c尺寸1x25.

数组不是正方形,但我不希望代码失败.有人可以解释这条线正在做什么(数学上),以及如何在Python中做到这一点?(即,如果它存在于Python中,那么MATLAB中内置的mrdivide函数的等价物?)

python matlab numpy linear-algebra

7
推荐指数
3
解决办法
8770
查看次数

堆叠numpy recarrays而不会失去他们的重新组合

假设我使用相同的dtype制作两个重组并堆叠它们:

>>> import numpy as np
>>> dt = [('foo', int), ('bar', float)]
>>> a = np.empty(2, dtype=dt).view(np.recarray)
>>> b = np.empty(3, dtype=dt).view(np.recarray)
>>> c = np.hstack((a,b))
Run Code Online (Sandbox Code Playgroud)

虽然a并且b是重新排列,但c不是:

>>> c.foo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'foo'
>>> d = c.view(np.recarray)
>>> d.foo
array([                  0,     111050731618561,                   0,
                   7718048, 8246760947200437872])
Run Code Online (Sandbox Code Playgroud)

如上所示,我显然可以再次将其变成重新组合,但这很不d方便.有没有理由为什么堆叠两个重组不会产生另一个重新排列?

python numpy recarray

7
推荐指数
2
解决办法
3316
查看次数

如何将AxesImage中的坐标映射到已保存图像文件中的坐标?

我使用matplotlib将数字矩阵显示为图像,沿轴附加标签,并将绘图保存到PNG文件.为了创建HTML图像映射,我需要知道PNG文件中由imshow显示的图像中的区域的像素坐标.

我已经找到了一个如何使用常规绘图执行此操作的示例,但是当我尝试使用imshow执行相同操作时,映射不正确.这是我的代码,它保存图像并尝试打印对角线上每个正方形中心的像素坐标:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
axim = ax.imshow(np.random.random((27,27)), interpolation='nearest')
for x, y in  axim.get_transform().transform(zip(range(28), range(28))):
    print int(x), int(fig.get_figheight() * fig.get_dpi() - y)
plt.savefig('foo.png', dpi=fig.get_dpi())
Run Code Online (Sandbox Code Playgroud)

这是生成的foo.png,显示为截图以包含标尺:

带有标尺的foo.png的屏幕截图

脚本的输出开始和结束如下:

73 55
92 69
111 83
130 97
149 112
…
509 382
528 396
547 410
566 424
585 439
Run Code Online (Sandbox Code Playgroud)

如你所见,y坐标是正确的,但x坐标是拉伸的:它们的范围从73到585而不是预期的135到506,它们间隔19像素而不是预期的14.我在做什么错误?

python matplotlib

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