有没有办法在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脚本能够使用所有可用的RAM而不是更多(出于效率原因).我可以通过只读取有限数量的数据来控制它,但我需要知道在运行时有多少RAM是免费的才能做到这一点.它将在各种Linux系统上运行.是否可以在运行时确定空闲RAM?
我正在尝试运行模拟来测试随机二进制字符串之间的平均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) 在现代奔腾上,似乎不再可能给处理器提供分支提示.假设一个分析编译器(如带有配置文件引导优化的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
我想计算其中元素为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 …
我有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) 我需要处理一些比RAM大几百倍的数据.我想在大块中读取,处理它,保存结果,释放内存并重复.有没有办法在python中提高效率?
我有随机的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真的很棒.
我想选择一个随机种子numpy.random并将其保存到变量中.我可以使用种子来设置种子numpy.random.seed(seed=None)但是如何选择随机种子并告诉你它是什么?
/dev/urandom默认情况下,数字似乎在linux 上使用.
例如,我从网上抓了一个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或其他任何东西,如果这使它更容易.)