小编Pie*_*oni的帖子

你如何让Python写下它在内存中的函数代码?

当我通过程序中的选项(计算生物学实验)时,我通常会将它们传递给.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写下函数的代码,因为它记下了变量的值?

python artificial-intelligence

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

如何在Python中以字母数字顺序获取下一个字符串?

我需要一个给出字符串的简单程序,在字母数字排序中返回下一个(或者只是字母顺序).

f("aaa")="aab"
f("aaZ")="aba"
Run Code Online (Sandbox Code Playgroud)

等等.

在其中一个模块中是否有这个功能?

python string

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

如何从Python运行"dot"作为命令?

我在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内部的命令运行吗?

python macos path dot graphviz

5
推荐指数
2
解决办法
7073
查看次数

以动态pythonic方式查找部分有序集中的最小元素

假设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,优雅的方式完成所有这些

python algorithm math

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

在Django模型中按顺序排列多对多关系

我正在写一个小网站来存储我写的文件.关系论文< - >作者很重要,但作者姓名的顺序(哪一个是第一作者,哪一个是二阶,依此类推)也很重要.

我只是在学习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)

这项工作很好,我现在可以定义作者是谁.但我无法订购它们.我该怎么办?

当然,我可以添加一系列关系:第一作者,第二作者,......但它会很难看,而且不会灵活.有什么好主意吗?

谢谢

django many-to-many django-models

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

在python中更新字典的最快方法

我有一本字典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条目时,它也可以更新它.如果不是,我将不得不两次调用哈希表?

谢谢.

python performance dictionary hashtable

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

迭代在python中不断增长的集合

我有一个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:更改变量名称以使其更易理解.谢谢你的建议

python iteration set python-2.7

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

Python:如何从numpy的矩阵中消除所有零行

我有一个0和1的numpy数组。我需要用一个pythonic提取所有由0组成的所有行,并保留其余所有行。

我一直在寻找回答此问题的先前问题,并且似乎该问题与以下内容重复: 删除2D矩阵中的全零行

但是我不明白任何答案。看起来重要的命令是这样的:

a[~(a==0).all(1)]
Run Code Online (Sandbox Code Playgroud)

但我完全不了解它是如何提取矩阵的。实际上,当我在代码中使用此行时,它将提取一个数组,而不是2d矩阵。

我已经看了np.all() 解释,但是看起来这只是一个测试。

有人可以帮我吗。

python numpy

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

使用 resample 来聚合 pandas 数据框中不同列的不同规则的数据

我有一个经典的“开盘高低收盘量”数据类型的数据框,这在金融中很常见。每行 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 …

python datetime resampling dataframe pandas

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

当用户将鼠标悬停在某些文本上时,如何打开一个小窗口?

我正在准备一个网页,其中包含更多可能显示的数据而不会使页面变得非常繁琐.我正在考虑不同的方式来做到这一点.一种方法是当用户将鼠标悬停在文本的特定部分上时,让额外的数据神奇地出现在一个小窗口上.雅虎!当您将鼠标悬停在用户上时,答案会执行类似的操作.但我想这必须是复杂的代码(对于我的水平).

所以我正在寻找一种简单的方法,当用户在一个特别有趣的文本上盘旋时,让一个小的弹出窗口出现在鼠标指针旁边.一旦用户离开文本,窗口就会自动消失.关于这个话题,我有几个问题:

  • 如何才能做到这一点?
  • 可以不使用JavaScript吗?
  • 我应该考虑哪些其他解决方案?(例如,我看到一些网页扩展了一些部分,当用户徘徊点击它们时)

html javascript popup

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

如何基于一组键有效地提取子数组

我有一个数组数组$ 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] …

php arrays

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

使用循环在python中等待比睡眠命令更多的CPU密集型?

在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 sleep wait python-3.x

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