小编mar*_*all的帖子

加速随机矩阵计算

我正在创建随机Toeplitz矩阵来估计它们可逆的概率.我目前的代码是

import random
from scipy.linalg import toeplitz
import numpy as np
for n in xrange(1,25):
    rankzero = 0
    for repeats in xrange(50000):
        column = [random.choice([0,1]) for x in xrange(n)]
        row = [column[0]]+[random.choice([0,1]) for x in xrange(n-1)]
        matrix = toeplitz(column, row)
        if  (np.linalg.matrix_rank(matrix) < n):
            rankzero += 1
    print n, (rankzero*1.0)/50000
Run Code Online (Sandbox Code Playgroud)

这可以加快吗?

我想增加值50000以获得更高的准确度,但目前这样做太慢了.

仅使用for n in xrange(10,14)节目进行性能分析

  400000    9.482    0.000    9.482    0.000 {numpy.linalg.lapack_lite.dgesdd}
  4400000    7.591    0.000   11.089    0.000 random.py:272(choice)
   200000    6.836    0.000   10.903    0.000 index_tricks.py:144(__getitem__)
        1    5.473    5.473   62.668 …
Run Code Online (Sandbox Code Playgroud)

python math performance numpy scipy

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

在窗口中使用pip

我使用刚刚给出的链接安装了distributepip.我还安装了Microsoft Visual C++ 2008可再发行组件包.但是,当我尝试使用pip.exe时,我得到了

error: Unable to find vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

python windows pip

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

确定一个点是否在矩形的联合中

我有一组轴平行的二维矩形,由它们的左上角和右下角定义(都在整数坐标中)。给定一个点查询,你如何有效地确定它是否在一个矩形中?我只需要一个是/否的答案,不需要担心它在哪个矩形中。

我可以通过查看 x 是否在 x1 和 x2 之间以及 y 是否在 y1 和 y2 之间来检查 (x,y) 是否在 ((x1, y1), (x2, y2)) 中。我可以为每个矩形单独执行此操作,这些矩形以矩形数量的线性时间运行。但是由于我有很多矩形并且我会做很多点查询,所以我想要更快的东西。

algorithm computational-geometry

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

找到一对没有交叉的对

给定一组n对整数,有一种快速的方法来确定是否存在两对(x 1,y 1)和(x 2,y 2),以便集合{x 1,y 1 } 的交集并且{x 2,x 2 }是空的?

例如,{(0,1),(0,2),(2,1),(3,2)}具有{(0,1),(3,2)}作为答案.然而{(0,1),(0,2),(2,1)}没有这样的对.

在Python中,您可以按如下方式尝试所有对.

l = [(0,1), (0,2), (2,1), (3,2)]
print  [pairs for pairs in itertools.combinations(l, 2)
    if not (set(pairs[0]) & set(pairs[1]))]
Run Code Online (Sandbox Code Playgroud)

这种方法需要O(n 2)次.你能得到更接近线性时间的东西吗?

python algorithm big-o time-complexity

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

如何在C源代码中启用优化?

是否可以编写C代码,以便在编译时使用

gcc -o foo foo.c
Run Code Online (Sandbox Code Playgroud)

它实际上用-O2编译foo.c?

我正在使用gcc 4.4.6.

c optimization gcc

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