我正在用Python编写程序,我意识到我需要解决的一个问题需要我,给定一个S带n元素(| S | = n)的集合来测试某个顺序的所有可能子集上的函数m(即m元素数量).要使用答案生成部分解,然后再次使用下一个阶m = m + 1,直到m = n.
我正在编写表单的解决方案:
def findsubsets(S, m):
subsets = set([])
...
return subsets
Run Code Online (Sandbox Code Playgroud)
但是知道Python我希望解决方案已经存在.
完成此任务的最佳方法是什么?
我想在mac osx 10.8.3上安装virtualenv和/或virtualenvwrapper
过去两天我一直在和python战斗.最后我能够使用brew安装python 2.7.4.在使用easy_install安装virtualenv之前.然后我尝试卸载它,试图使我的计算机与我的同事一样.也许我成功地卸载了它,也许不是.我不知道如何测试它.现在我应该使用 - 安装virtualenv -
pip install virtualenv
Run Code Online (Sandbox Code Playgroud)
但它给了我 -
Could not find an activated virtualenv (required).
Run Code Online (Sandbox Code Playgroud)
pip install virtualenvwrapper 给出完全相同的输出.
变量:PIP_RESPECT_VIRTUALENV是null:
echo $PIP_RESPECT_VIRTUALENV
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
谢谢
设S是PHP中的关联数组,我需要从中检索并提取第一个元素,包括值和键.
我会用
value1=array_pop(S);
Run Code Online (Sandbox Code Playgroud)
但它只给了我价值.
我可以用
K=array_keys(S);
key1=array_pop(K);
value1=array_pop(S);
Run Code Online (Sandbox Code Playgroud)
但它很复杂,因为它需要有两份相同的数据.由于数组本身是数组数组中的元素,因此令人困惑.在提取它时,必须有一种更优雅的方式来读取这对键/值.
设G是图.所以G是一组节点和一组链接.我需要找到一种快速分割图形的方法.我现在正在使用的图表只有120*160个节点,但我可能很快会在另一个上下文(不是医学,但是网站开发)中处理同等问题,有数百万个节点.
所以,我所做的是将所有链接存储到图表矩阵中:
M=numpy.mat(numpy.zeros((len(data.keys()),len(data.keys()))))
Run Code Online (Sandbox Code Playgroud)
如果节点s连接到节点t,则M在位置s,t中保持1.我确保M是对称的M [s,t] = M [t,s],并且每个节点链接到它自己M [s,s] = 1.
如果我记得很好,如果我将M与M相乘,则结果是一个矩阵,表示连接通过两个步骤到达的顶点的图形.
因此,我继续将M自身与M一起使用,直到矩阵中的零数不再减少为止.现在我有连接组件的列表.现在我需要对这个矩阵进行聚类.
到目前为止,我对算法非常满意.我认为它简单,优雅,而且速度相当快.我在这部分遇到了麻烦.
基本上我需要将此图拆分为其连接的组件.
我可以浏览所有节点,看看它们连接的是什么.
但是如何排序矩阵重新排序.但我不知道是否可以这样做.
以下是目前的代码:
def findzeros(M):
nZeros=0
for t in M.flat:
if not t:
nZeros+=1
return nZeros
M=numpy.mat(numpy.zeros((len(data.keys()),len(data.keys()))))
for s in data.keys():
MatrixCells[s,s]=1
for t in data.keys():
if t<s:
if (scipy.corrcoef(data[t],data[s])[0,1])>threashold:
M[s,t]=1
M[t,s]=1
nZeros=findzeros(M)
M2=M*M
nZeros2=findzeros(M2)
while (nZeros-nZeros2):
nZeros=nZeros2
M=M2
M2=M*M
nZeros2=findzeros(M2)
Run Code Online (Sandbox Code Playgroud)
有人建议我使用SVD分解.以下是5x5图表上问题的简单示例.我们将使用这个,因为19200x19200方阵并不容易看到簇.
import numpy
import scipy
M=numpy.mat(numpy.zeros((5,5)))
M[1,3]=1
M[3,1]=1
M[1,1]=1
M[2,2]=1
M[3,3]=1
M[4,4]=1
M[0,0]=1
print M
u,s,vh = numpy.linalg.linalg.svd(M)
print u
print s
print …Run Code Online (Sandbox Code Playgroud) 我使用python存储一个表,我需要持久性.
基本上我将表作为字典字符串存储到数字中.整个存放与搁置
self.DB=shelve.open("%s%sMoleculeLibrary.shelve"%(directory,os.sep),writeback=True)
Run Code Online (Sandbox Code Playgroud)
我用writeback,True因为我发现如果不这样做,系统往往会不稳定.
在计算之后,系统需要关闭数据库并将其存储回来.现在数据库(表格)大约是540MB,而且需要很长时间.桌子增长到大约500MB后,时间爆炸了.但我需要一张更大的桌子.事实上我需要其中两个.
我可能正在使用错误的持久性形式.我该怎么做才能提高性能?
我有两个数组,$ a和$ b,需要检查它们是否包含完全相同的元素(与顺序无关).我正在考虑使用
if (sizeof($a)==sizeof($b) AND array_diff($a,$b)==array())
{
}
Run Code Online (Sandbox Code Playgroud)
但我是PHP的新手,所以我想知道:有更好的方法吗?
因为我需要将它们用作集合,所以我可能根本不应该使用数组而是其他东西.
一旦您学习了Python中的基本命令,您通常就能够解决您遇到的大多数编程问题.但是这样做的方式并不是真正的Python-ic.常见的是使用经典的c ++或Java心态来解决问题.但Python不止于此.它包含功能编程; 有很多图书馆; 面向对象,以及自己的方式.简而言之,通常会有更好,更短,更快,更优雅的方式来做同样的事情.
这有点像学习一门新语言.首先你要学习单词和语法,但是你需要流利.
一旦学会了语言,你如何熟练掌握Python?你是怎么做到的?什么书主要帮助?
我设法使用Python加载了一组图像.
我希望我的脚本能够拍摄这一系列图像(以我需要的任何格式),并从中创建视频.所有这一切的最大限度是我正在寻找一些简单易用的安装方法.理想情况下,使用标准OS X安装过程:
我不想花费很多精力来安装视频编辑程序.只是一些简单的工作.
我的目标是什么格式?我需要我的视频可以在Linux,Mac和Windows系统上播放.图像是图形,所以我们说的是谨慎的图像,而不是照片.压缩它应该很容易.将有大约1000张图片,所以这将是一部短片.
我应该使用哪些工具来制作实际视频?我需要使用为此目的设计的库直接从Python中执行此操作,或者通过脚本编写从Python调用的命令行工具.
我正在使用Graphviz绘制一个点阵.
节点是一组数字.
作为一个格子,我希望节点的高度位置(y)表示节点所代表的集合中的元素数量.那么x位置应该由graphviz定义,以使表示更清晰.
可能吗?
根据点文档,应该有属性pos,它应该定义节点的位置.但是,尽管我以许多不同的方式尝试了很多次,但我无法获得定义节点位置的任何图形.有没有人有这个成功?
以下是我使用的经典点文件:
digraph G {
"528 544\n640 768" -> "768 528";
"528 536\n530 539" -> "539";
"528 536\n530 539" -> "528";
"800 896 548\n944 566 728\n539 704 768" -> "704 768\n539 548";
"800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566";
"800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768";
"768 539" -> "768";
"768 539" -> "539";
"768" -> "?";
"944" -> "?";
"944 528 536\n530 566 560\n728 656 539" -> …Run Code Online (Sandbox Code Playgroud) 我有一个非常复杂的图表,我无法全部展示并理解它。我需要制作它的简化版本,仅显示一些节点而不显示其他节点。我不只是希望其他节点不可见,而是真正不存在(以便简化图形)。
解决方案是制作一个仅包含某些层的图表。但这可能吗?还有哪些其他选择?
谢谢,彼得罗
python ×6
graph ×2
graphviz ×2
php ×2
arrays ×1
comparison ×1
database ×1
dot ×1
graph-theory ×1
macos ×1
matrix ×1
performance ×1
persistence ×1
pip ×1
set ×1
shelve ×1
sorting ×1
video ×1
virtualenv ×1