当我通过程序中的选项(计算生物学实验)时,我通常会将它们传递给.py文件.
所以我有这个.py文件,如下所示:
starting_length=9
starting_cell_size=1000
LengthofExperiments=5000000
Run Code Online (Sandbox Code Playgroud)
然后我执行文件并获取数据.由于程序全部在我的机器上,没有其他人可以访问它,因此它是安全的.
我也可以很容易地写一个类似的文件:
def writeoptions(directory):
options=""
options+="starting_length=%s%s"%(starting_length,os.linesep)
options+="starting_cell_size=%s%s"%(starting_cell_size,os.linesep)
options+="LengthofExperiments=%s%s"%(LengthofExperiments,os.linesep)
...
open("%s%soptions.py"%(directory,os.sep),'w').write(options)
Run Code Online (Sandbox Code Playgroud)
我想传递一个函数作为参数之一:
starting_length=9
starting_cell_size=1000
LengthofExperiments=5000000
def pippo(a,b):
return a+b
functionoperator=pippo
Run Code Online (Sandbox Code Playgroud)
当然,在真正的实验中,函数pippo会复杂得多.不同于实验到实验.
但我无法做的是自动编写函数.总之,如果其中一个选项是函数,我不知道如何推广writeoptions函数以继续编写选项.我当然可以复制原始文件,但这是不优雅的,低效的(因为它包含许多未被使用的额外选项),并且通常不能解决问题.
你如何让python写下函数的代码,因为它记下了变量的值?
我需要一个给出字符串的简单程序,在字母数字排序中返回下一个(或者只是字母顺序).
f("aaa")="aab"
f("aaZ")="aba"
Run Code Online (Sandbox Code Playgroud)
等等.
在其中一个模块中是否有这个功能?
我在Mac OSX Leopard上使用Python.
我试图从Python运行程序'dot'(Graphviz的一部分):
# -*- coding: utf-8 -*-
import os
print os.environ['PATH']
print os.system("ls >> a.txt")
print os.system("dot -o9.png -Tpng ./6.dot")
Run Code Online (Sandbox Code Playgroud)
命令"ls"只是为了确保python在正确的目录中.它是.我得到的结果是:
/ usr/bin:/ bin:/ usr/sbin:/ sbin 0 32512
我的理解是32512错误意味着python找不到文件,因为文件6.dot就在那里(如果我从终端运行"dot -o9.png -Tpng ./6.dot"我收到没有错误,和9.png得到),我假设Python找不到点文件.
我可能需要将点文件添加到路径中.但我不知道它在哪里.如果我跑:
whereis dot
Run Code Online (Sandbox Code Playgroud)
我没有回答.
我怎样才能找到点可执行文件?
或者,我可以将Python程序作为Python内部的命令运行吗?
假设Os是一个部分有序的集合,并且在Os中给出任意两个对象O1和O2,如果O1大于O2,则F(O1,O2)将返回1,如果O1小于O2则返回-1,如果它们是无比的则为2,如果O1等于O2则为0.
我需要找到元素的子集Mn是最小的Os.对于Mn中的每个A,对于Os中的每个B,F(A,B)永远不等于1.
这并不难,但我确信它可以用更加pythonic的方式完成.
快速而肮脏的方式是:
def GetMinOs(Os):
Mn=set([])
NotMn=set([])
for O1 in Os:
for O2 in Os:
rel=f(O1,O2)
if rel==1: NotMn|=set([O1])
elif rel==-1: NotMn|=set([O2])
Mn=Os-NotMn
return Mn
Run Code Online (Sandbox Code Playgroud)
特别是我对我基本上经历所有元素N ^ 2次的事实感到不满意.我想知道是否会有一种动态的方式.通过"动态",我并不仅仅意味着快速,而且一旦被发现的东西不是最小的可能,也许它可以被取消.并以pythonic,优雅的方式完成所有这些
我正在写一个小网站来存储我写的文件.关系论文< - >作者很重要,但作者姓名的顺序(哪一个是第一作者,哪一个是二阶,依此类推)也很重要.
我只是在学习Django,所以我不太了解.无论如何,到目前为止,我已经完成了:
from django.db import models
class author(models.Model):
Name = models.CharField(max_length=60)
URLField = models.URLField(verify_exists=True, null=True, blank=True)
def __unicode__(self):
return self.Name
class topic(models.Model):
TopicName = models.CharField(max_length=60)
def __unicode__(self):
return self.TopicName
class publication(models.Model):
Title = models.CharField(max_length=100)
Authors = models.ManyToManyField(author, null=True, blank=True)
Content = models.TextField()
Notes = models.TextField(blank=True)
Abstract = models.TextField(blank=True)
pub_date = models.DateField('date published')
TimeInsertion = models.DateTimeField(auto_now=True)
URLField = models.URLField(verify_exists=True,null=True, blank=True)
Topic = models.ManyToManyField(topic, null=True, blank=True)
def __unicode__(self):
return self.Title
Run Code Online (Sandbox Code Playgroud)
这项工作很好,我现在可以定义作者是谁.但我无法订购它们.我该怎么办?
当然,我可以添加一系列关系:第一作者,第二作者,......但它会很难看,而且不会灵活.有什么好主意吗?
谢谢
我有一本字典A和一个可能的条目foo.我知道A [foo]应该等于x,但我不知道A [foo]是否已被定义.在任何情况下,如果定义了A [foo],则意味着它已经具有正确的值.
执行速度更快:
if foo not in A.keys():
A[foo]=x
Run Code Online (Sandbox Code Playgroud)
或者只是更新
A[foo]=x
Run Code Online (Sandbox Code Playgroud)
因为当计算机找到foo条目时,它也可以更新它.如果不是,我将不得不两次调用哈希表?
谢谢.
我有一个set,setOfManyElements,它包含n个元素.我需要遍历所有这些元素并在S的每个元素上运行一个函数:
for s in setOfManyElements:
elementsFound=EvilFunction(s)
setOfManyElements|=elementsFound
Run Code Online (Sandbox Code Playgroud)
EvilFunction(s)返回它找到的元素集.其中一些已经在S中,一些将是新的,一些将在S中并且将已经过测试.
问题是每次我运行EvilFunction时,S都会扩展(直到最大设置,此时它将停止增长).所以我基本上在不断增长的集合上进行迭代.此外,EvilFunction需要很长时间才能计算,因此您不希望在相同数据上运行两次.
有没有一种有效的方法来解决Python 2.7中的这个问题?
LATE EDIT:更改变量名称以使其更易理解.谢谢你的建议
我有一个0和1的numpy数组。我需要用一个pythonic提取所有由0组成的所有行,并保留其余所有行。
我一直在寻找回答此问题的先前问题,并且似乎该问题与以下内容重复: 删除2D矩阵中的全零行
但是我不明白任何答案。看起来重要的命令是这样的:
a[~(a==0).all(1)]
Run Code Online (Sandbox Code Playgroud)
但我完全不了解它是如何提取矩阵的。实际上,当我在代码中使用此行时,它将提取一个数组,而不是2d矩阵。
我已经看了np.all() 解释,但是看起来这只是一个测试。
有人可以帮我吗。
我有一个经典的“开盘高低收盘量”数据类型的数据框,这在金融中很常见。每行 1 分钟。720 行。我用 Kraken 的代码收集它:
import urllib.request, json
with urllib.request.urlopen("https://api.kraken.com/0/public/OHLC?pair=XXBTZEUR&interval=1") as url:
data = json.loads(url.read().decode())
columns=['time', 'open', 'high', 'low', 'close', 'vwap', 'volume', 'ount']
data_DF=pd.DataFrame(data['result']['XXBTZEUR'],columns=columns)
data_DF['open']=data_DF['open'].astype(float)
data_DF['high']=data_DF['high'].astype(float)
data_DF['low']=data_DF['low'].astype(float)
data_DF['close']=data_DF['close'].astype(float)
data_DF['volume']=data_DF['volume'].astype(float)
data_DF['vwap']=data_DF['vwap'].astype(float)
data_DF['ount']=data_DF['ount'].astype(int)
data_DF['time']=pd.to_datetime(data_DF['time'],unit='s')
data_DF.set_index('time',inplace=True)
Run Code Online (Sandbox Code Playgroud)
我现在需要聚合不同时间段的数据。为了简单起见,我们假设只有经典的 5 分钟。每列必须根据不同的规则生成:
开列必须是样本开列值的第一个值;
关闭列必须是样本关闭列值中的最后一个值;
high 必须是样本的 high 列值中的最大值;
低值必须是样本的低列值中的最小值;
我试过
data_DF5=data_DF['vwap'].resample('5Min').OHLC()
Run Code Online (Sandbox Code Playgroud)
但它为每根柱子创建了一系列开盘价、收盘价和收盘价。嗯,不是我要找的。
我试过:
data_DF5=data_DF['time'].resample('5Min')
data_DF5['volume']=data_DF['volume'].resample('5Min').sum()
data_DF5['open']=data_DF['open'].resample('5Min').first()
data_DF5['close']=data_DF['close'].resample('5Min').last()
data_DF5['high']=data_DF['high'].resample('5Min').max()
data_DF5['low']=data_DF['low'].resample('5Min').min()
Run Code Online (Sandbox Code Playgroud)
目的是一次构建一列数据框。
我得到一个
“无法打开‘hashtable_class_helper.pxi’:找不到文件”错误,我无法理解。如果我改变第一行
data_DF5=data_DF['vwap'].resample('5Min').mean()
Run Code Online (Sandbox Code Playgroud)
我得到一个我什至无法解释的数据框[参见(*)]。
如果我改变第一行
data_DF5=data_DF['vwap'].resample('5Min')
Run Code Online (Sandbox Code Playgroud)
我得到:
“DatetimeIndexResampler”对象不支持项目分配。
我实在是不知所措。我已经寻找过 stackoverflow 其他问题,但似乎没有一个涉及这种情况。此外,手册页似乎并不清楚如何解决这个问题。
(*)
2018-12-29 07:05:00 3417.8 2018-12-29 07:10:00 3411.12 2018-12-29 07:15:00 3408.98 2018-12-29 07:20:00 …
我正在准备一个网页,其中包含更多可能显示的数据而不会使页面变得非常繁琐.我正在考虑不同的方式来做到这一点.一种方法是当用户将鼠标悬停在文本的特定部分上时,让额外的数据神奇地出现在一个小窗口上.雅虎!当您将鼠标悬停在用户上时,答案会执行类似的操作.但我想这必须是复杂的代码(对于我的水平).
所以我正在寻找一种简单的方法,当用户在一个特别有趣的文本上盘旋时,让一个小的弹出窗口出现在鼠标指针旁边.一旦用户离开文本,窗口就会自动消失.关于这个话题,我有几个问题:
我有一个数组数组$ data.
同
print_r($data);
Run Code Online (Sandbox Code Playgroud)
回国
Array ( [1401] => Array ( [0] => 94 [1] => 2 [2] => 159 ) [1402] => Array ( [0] => 94 [1] => 2 [2] => 50 [3] => 23 [4] => 159 ) [1403] => Array ( [0] => 94 [1] => 2 [2] => 50 ) [1404] => Array ( [0] => 94 [1] => 90 [2] => 50 [3] => 23 ) [1405] => Array ( [0] => 94 [1] …
在python 3上我需要停止一段时间.当我醒来时,我需要相当准确.问题是在这个暂停中我应该进行一些计算,这些计算将花费一部分时间.所以我time.sleep()不能通过它,否则我会开始得太晚.
所以我在考虑运行这段代码:
import time
wakeuptime=time.time()+20 #start again exactly 20 seconds from now
UnpredictablySlowFunction()
while (time.time()<wakeuptime):
pass
Run Code Online (Sandbox Code Playgroud)
我有点担心这种循环可能比普通的CPU更密集time.sleep().特别是考虑到程序应该在后台运行24/7.
python ×9
algorithm ×1
arrays ×1
dataframe ×1
datetime ×1
dictionary ×1
django ×1
dot ×1
graphviz ×1
hashtable ×1
html ×1
iteration ×1
javascript ×1
macos ×1
many-to-many ×1
math ×1
numpy ×1
pandas ×1
path ×1
performance ×1
php ×1
popup ×1
python-2.7 ×1
python-3.x ×1
resampling ×1
set ×1
sleep ×1
string ×1
wait ×1