小编mar*_*all的帖子

在android上使用python和matplotlib

有没有办法在Android平板电脑上设置python 2.7.x + matplotlib,以便您可以运行简单的标准python代码?我希望能够运行我在Linux桌面上运行的相同脚本.这仅供我自己使用,我不需要将代码分发给其他任何人.

作为一个具体的例子,是否可以运行此脚本?

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)
Run Code Online (Sandbox Code Playgroud)

python android matplotlib tablet pydroid

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

确定Python中的空闲RAM

我希望我的python脚本能够使用所有可用的RAM而不是更多(出于效率原因).我可以通过只读取有限数量的数据来控制它,但我需要知道在运行时有多少RAM是免费的才能做到这一点.它将在各种Linux系统上运行.是否可以在运行时确定空闲RAM?

python memory-management

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

如何加快Levenshtein距离计算

我正在尝试运行模拟来测试随机二进制字符串之间的平均Levenshtein距离.

我的程序是在python中,但我正在使用此C扩展.大部分时间相关的函数计算两个字符串之间的Levenshtein距离,就是这个.

lev_edit_distance(size_t len1, const lev_byte *string1,
                  size_t len2, const lev_byte *string2,
                  int xcost)
{
  size_t i;
  size_t *row;  /* we only need to keep one row of costs */
  size_t *end;
  size_t half;

  /* strip common prefix */
  while (len1 > 0 && len2 > 0 && *string1 == *string2) {
    len1--;
    len2--;
    string1++;
    string2++;
  }

  /* strip common suffix */
  while (len1 > 0 && len2 > 0 && string1[len1-1] == string2[len2-1]) {
    len1--; …
Run Code Online (Sandbox Code Playgroud)

c python optimization performance levenshtein-distance

12
推荐指数
1
解决办法
2955
查看次数

编译器可以对分支信息做什么?

在现代奔腾上,似乎不再可能给处理器提供分支提示.假设一个分析编译器(如带有配置文件引导优化的gcc)可以获得有关可能的分支行为的信息,那么它可以做些什么来生成更快执行的代码?

我所知道的唯一选择是将不太可能的分支移动到函数的末尾.还有别的事吗?

更新.

http://download.intel.com/products/processor/manual/325462.pdf第2a卷第2.1.1节说

"分支提示前缀(2EH,3EH)允许程序向处理器提供关于分支最可能的代码路径的提示.仅将这些前缀用于条件分支指令(Jcc).其他使用分支提示前缀和/或保留其他具有Intel 64或IA-32指令的未定义操作码;此类使用可能会导致不可预测的行为."

我不知道这些实际上是否有任何影响.

另一方面,第3.4.1节.的http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf

"编译器生成的代码可以提高英特尔处理器中分支预测的效率.英特尔C++编译器通过以下方式实现:

  • 将代码和数据保存在不同的页面上
  • 使用条件移动指令来消除分支
  • 生成与静态分支预测算法一致的代码
  • 在适当的地方内联
  • 如果迭代次数是可预测的,则展开

通过配置文件引导优化,编译器可以布置基本块以消除函数的最频繁执行路径的分支或至少提高其可预测性.分支预测不一定是源级别的关注点.有关更多信息,请参阅英特尔C++编译器文档."

http://cache-www.intel.com/cd/00/00/40/60/406096_406096.pdf在"PGO的性能改进"中说

"PGO最适用于具有许多频繁执行的分支的代码,这些代码在编译时很难预测.例如,代码具有密集的错误检查,其中错误条件在大多数情况下都是错误的.不经常执行的(冷)错误处理代码可以重新定位,因此分支很少被错误预测.最小化冷代码交错到频繁执行的(热)代码可以改善指令缓存行为."

compiler-construction optimization x86 assembly branch-prediction

12
推荐指数
2
解决办法
1297
查看次数

计算所有子矩阵的满级排序数

我想计算其中元素为1或-1的n个矩阵有多少m具有其所有floor(m/2)+1 by n子矩阵都具有满秩的属性.我当前的方法是天真和缓慢的,并在以下python/numpy代码中.它只是迭代所有矩阵并测试所有子矩阵.

import numpy as np
import itertools
from scipy.misc import comb

m = 8
n = 4

rowstochoose = int(np.floor(m/2)+1)

maxnumber = comb(m, rowstochoose, exact = True)

matrix_g=(np.array(x).reshape(m,n) for x in itertools.product([-1,1], repeat = m*n))

nofound = 0
for A in matrix_g:
    count = 0
    for rows in itertools.combinations(range(m), int(rowstochoose)):
       if (np.linalg.matrix_rank(A[list(rows)]) == int(min(n,rowstochoose))):
           count+=1
       else:
           break
    if (count == maxnumber):
         nofound+=1   
print nofound, 2**(m*n)
Run Code Online (Sandbox Code Playgroud)

有更好/更快的方法吗?我想对n和m进行最多20次的计算,但任何重大改进都会很好.

语境.我有兴趣为https://math.stackexchange.com/questions/640780/probability-that-every-vector-is-not-orthogonal-to-half-of-the-others获取一些确切的解决方案.


作为比较实现的数据点.n,m = 4,4应该输出26880. n,m=5,5 …

python algorithm math performance numpy

12
推荐指数
1
解决办法
1250
查看次数

如何在Windows中使用pip + mingw安装numpy?

我有pip + mingw在windows中工作.我测试了它

pip install cython
Run Code Online (Sandbox Code Playgroud)

它完美无缺.

pip install numpy
Run Code Online (Sandbox Code Playgroud)

然而,失败了很长的错误消息列表.这样做的正确方法是什么,还是应该放弃尝试使用pip?

Downloading/unpacking numpy
  Running setup.py egg_info for package numpy
    non-existing path in 'numpy\\distutils': 'site.cfg'
    F2PY Version 2
    blas_opt_info:
    blas_mkl_info:
      libraries mkl,vml,guide not found in ['C:\\Python27\\lib', 'C:\\', 'C:\\Python27\\libs']
      NOT AVAILABLE

    atlas_blas_threads_info:
    Setting PTATLAS=ATLAS
      libraries ptf77blas,ptcblas,atlas not found in ['C:\\Python27\\lib', 'C:\\', 'C:\\Python27\\libs']
      NOT AVAILABLE

    atlas_blas_info:
      libraries f77blas,cblas,atlas not found in ['C:\\Python27\\lib', 'C:\\', 'C:\\Python27\\libs']
      NOT AVAILABLE

    blas_info:
      libraries blas not found in ['C:\\Python27\\lib', 'C:\\', 'C:\\Python27\\libs']
      NOT AVAILABLE

    blas_src_info:
      NOT AVAILABLE

      NOT AVAILABLE

    lapack_opt_info: …
Run Code Online (Sandbox Code Playgroud)

windows mingw numpy pip

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

以块为单位处理比物理内存大得多的数据

我需要处理一些比RAM大几百倍的数据.我想在大块中读取,处理它,保存结果,释放内存并重复.有没有办法在python中提高效率?

python chunks

10
推荐指数
1
解决办法
5969
查看次数

找到两对总和为相同值的对

我有随机的2d数组,我使用

import numpy as np
from itertools import combinations
n = 50
A = np.random.randint(2, size=(n,n))
Run Code Online (Sandbox Code Playgroud)

我想确定矩阵是否有两对行,它们总和到同一行向量.我正在寻找一种快速的方法来做到这一点.我目前的方法只是尝试所有可能性.

for pair in  combinations(combinations(range(n), 2), 2):
    if (np.array_equal(A[pair[0][0]] + A[pair[0][1]], A[pair[1][0]] + A[pair[1][1]] )):
        print "Pair found", pair
Run Code Online (Sandbox Code Playgroud)

一种适用的方法n = 100真的很棒.

python algorithm performance numpy

10
推荐指数
1
解决办法
412
查看次数

选择随机种子并保存

我想选择一个随机种子numpy.random并将其保存到变量中.我可以使用种子来设置种子numpy.random.seed(seed=None)但是如何选择随机种子并告诉你它是什么?

/dev/urandom默认情况下,数字似乎在linux 上使用.

python numpy

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

如何显示已在python中下载的pdf

例如,我从网上抓了一个pdf

import requests
pdf = requests.get("http://www.scala-lang.org/docu/files/ScalaByExample.pdf")
Run Code Online (Sandbox Code Playgroud)

我想修改此代码以显示它

from gi.repository import Poppler, Gtk

def draw(widget, surface):
    page.render(surface)

document = Poppler.Document.new_from_file("file:///home/me/some.pdf", None)
page = document.get_page(0)

window = Gtk.Window(title="Hello World")
window.connect("delete-event", Gtk.main_quit)
window.connect("draw", draw)
window.set_app_paintable(True)

window.show_all()
Gtk.main()
Run Code Online (Sandbox Code Playgroud)

如何修改该document =行以使用包含pdf的变量pdf?

(我不介意使用popplerqt4或其他任何东西,如果这使它更容易.)

python pdf poppler pdf-rendering

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