小编mac*_*ing的帖子

在Python脚本运行之间将持久变量保留在内存中

有没有办法将结果变量保存在内存中,所以每次运行脚本的开头时我都不必重新计算它?每次运行脚本时,我都会对数据集(我从磁盘上读取)执行一系列(5-10秒)的精确操作.这不会是一个太大的问题,因为我很擅长使用交互式编辑器在运行之间调试我的代码; 但有时候,互动功能并没有削减它.

我知道我可以把我的结果写到磁盘上的文件中,但是如果可能的话,我想避免这样做.这应该是一个解决方案,它在我第一次运行脚本时生成一个变量,并将其保存在内存中,直到shell本身关闭或直到我明确告诉它失败.像这样的东西:

# Check if variable already created this session
in_mem = var_in_memory() # Returns pointer to var, or False if not in memory yet
if not in_mem:
    # Read data set from disk
    with open('mydata', 'r') as in_handle:
        mytext = in_handle.read()
    # Extract relevant results from data set
    mydata = parse_data(mytext)
    result = initial_operations(mydata)
    in_mem = store_persistent(result)
Run Code Online (Sandbox Code Playgroud)

我有一个暗示搁架模块可能就是我在这里寻找的东西,但看起来为了打开搁架变量我必须为持久对象指定一个文件名,所以我不确定是否这是我正在寻找的.

关于搁置做我想做的事的任何提示?还有其他想法吗?

python memory variables

51
推荐指数
4
解决办法
5万
查看次数

在列表中识别连续重复项的最Pythonic方法是什么?

我有一个整数列表,我希望能够识别连续的重复块:也就是说,我想生成一个保留顺序的双重列表,其中每个双重包含(int_in_question,出现次数).

例如,如果我有一个列表,如:

[0, 0, 0, 3, 3, 2, 5, 2, 6, 6]
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

[(0, 3), (3, 2), (2, 1), (5, 1), (2, 1), (6, 2)]
Run Code Online (Sandbox Code Playgroud)

我有一个相当简单的方法,使用for循环,temp和计数器:

result_list = []
current = source_list[0]
count = 0
for value in source_list:
    if value == current:
        count += 1
    else:
        result_list.append((current, count))
        current = value
        count = 1
result_list.append((current, count))
Run Code Online (Sandbox Code Playgroud)

但我真的很喜欢python的函数式编程习语,我希望能够通过一个简单的生成器表达式来实现这一点.但是我发现在使用发电机时很难保留子计数.我有一种感觉,两个步骤可能会让我在那里,但是现在我很难过.

是否有一种特别优雅/ pythonic的方式来做到这一点,特别是对于发电机?

python list generator duplicates

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

Weka简单的K-means聚类分配

我感觉就像一个简单的问题,但我似乎无法找到答案.我对Weka很陌生,但我觉得我已经对此做了一些研究(至少阅读了谷歌搜索结果的前几页)并且干了.

我正在使用Weka来使用Simple K-Means运行聚类.在结果列表中,我可以直观地看到我的输出("可视化集群分配"),从我对K-Means算法的理解和Weka的输出中可以清楚地看出,我的每个实例最终都是一个成员.不同的簇(以特定的质心为中心,如果你愿意的话).

我可以从文本输出中看到一些集群组合.但是,Weka没有为我提供从实例编号到集群编号的明确"映射".我想要像:

instance 1 --> cluster 0
instance 2 --> cluster 0
instance 3 --> cluster 2
instance 4 --> cluster 1
... etc.
Run Code Online (Sandbox Code Playgroud)

如何在不计算每个项目到每个质心的距离的情况下获得这些结果?

cluster-analysis data-mining weka k-means

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

如何将列表或字符串解析为固定长度的块

我真的陷入了一个基本问题.我试图获取一个项目的列表,并将其划分为许多项目的列表,每个项目的字符长度为10.例如,给出一个包含一个项目的列表['111111111122222222223333333333'],输出将产生:

1111111111
2222222222
3333333333
Run Code Online (Sandbox Code Playgroud)

我觉得这很简单,但我很难过.我试图创建一个这样的函数:

def parser(nub):    
    while len(nub) > 10:  
        for subnub in nub:  
            subnub = nub[::10]
            return(subnub)  
    else:  
        print('Done')
Run Code Online (Sandbox Code Playgroud)

显然,这不起作用.有什么建议?使用字符串比列表更容易吗?

python

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

删除连续的字母重复项

寻找一种快速的方法,当重复出现在彼此旁边时,将重复数限制为最大值2.

例如:jeeeeeeeep=>['jep','jeep']

在python中寻找建议,但很高兴看到任何东西的例子 - 不难切换.

谢谢你的帮助!

编辑:英语连续没有任何(或许多)辅音(同一个字母)吗?让我们限制这一点,以便连续不重复辅音,连续两个元音

编辑2:我很傻(嘿,这个词有两个辅音),只是检查所有字母,限制彼此相邻的重复字母为两个.

python string spell-checking pattern-matching

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

如何使用Pyparsing为以下数据创建语法

我有类似于YAML的数据,需要使用Pyparsing为它创建语法.与Python一样,Yaml的数据范围由空白定义

数据:

object : object_name 
comment : this object is created first 
methods:   
  method_name:
    input: 
      arg1: arg_type
      arg2: arg2_type
    output:   

  methond2_name:
    input:
    output:
      arg1 : arg_type
Run Code Online (Sandbox Code Playgroud)

解析上面的内容之后,它应该输出类似于这样的东西:

{'comment': 'this object is created first',
 'object': 'object_name',
 'methods': {'method_name': {'input': {'arg1': 'arg_type', 'arg2': 'arg2_type'}, 
 'output': None}, 'methond2_name': {'input': None, 'output': {'arg1': 'arg_type'}}}}
Run Code Online (Sandbox Code Playgroud)

[编辑]数据类似于YAML但不完全相同.所以YAML Python解析器无法解析它.我留下了一些细节,以使示例数据更简单

python parsing pyparsing

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

matlab对n维数据输入需要什么格式?

我有一个用Python脚本制作的4维字典,用于我正在研究的数据挖掘项目,我想将数据读入Matlab,对数据进行一些统计测试.

读取二维矩阵是微不足道的.我认为,由于我的第一个维度只有4个深度,我可以将每个切片写入一个单独的文件(总共4个文件),每个文件都有许多2维切片,看起来像这样:

2 3 6
4 5 8

6 7 3
1 4 3

6 6 7
8 9 0
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用,并且matlab将其读作单个连续的6×3矩阵.我甚至看了一眼dlmread,但无法弄清楚如何让它做我想要的.如何格式化,以便将3个(或更多个)维度放在一个文件中?

3d matlab file input matrix

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

如何使用Supply monad创建一个生成全局唯一名称的函数?

背景:

我正在做一个代码翻译项目,需要我生成变量名.我生成的名称都不应该是彼此重复的.

我真的很沮丧,因为这将是一个愚蠢的简单和优雅的Python生成器功能.

我尝试过的:

我之前做的方式是通过递归调用我的翻译代码传递一个计数器变量,并将(可能递增的)计数器传递回基本上每个函数的返回值.

这真的很乱:它增加了一个额外的参数来跟踪这些功能; 更糟糕的是它仍然迫使我使用凌乱的元组返回值,否则我将有一个简单的一元返回值.

在Haskell的短暂时间里,我从来没有真正熟练使用monad,但我有一个想法,我可以使用Statemonad 上的包装来模拟全局计数器变量.在试图修改monad并制作我自己的monad三天之后,然后试图改变别人的monad来生成我需要的值,我终于使用其他人的高级monad来自我辞职了(也许有一些改动.)

我现在的问题:

我已经将MonadSupplyMonadUnique模块确定为一对可能提供我需要的简单接口的一对.不幸的是我无法弄清楚如何使用它们.

特别是MonadSupply模块文档提供了这个很好的示例用例:

runSupplyVars x = runSupply x vars
    where vars = [replicate k ['a'..'z'] | k <- [1..]] >>= sequence
Run Code Online (Sandbox Code Playgroud)

看起来像我想要的!一旦我得到了编译模块,我在解释器中检查了这个函数的类型:

> :t runSupplyVars
runSupplyVars :: Supply [Char] a -> Identity (a, [[Char]])
Run Code Online (Sandbox Code Playgroud)

我已经尝试将很多(数小时)不同的东西传递给这个功能,但没有成功.我也尝试将函数传递给其他各种函数,以查看它们是否会隐式提供我需要的参数.到目前为止没有运气.

问题:

有人可以提供此runSupplyVars功能的示例用例吗?

是否有可能做我正在考虑的事情?我希望有一个我可以在程序中的任何地方调用的函数,它将在每次调用时为我提供不同的变量名或整数.

monads haskell functional-programming unique state-monad

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

AttributeError:'numpy.ndarray'对象没有属性'clock'

这是我尝试在Window中计算CPU时间的方法.

start_time_1 = time.clock()
coupl.setParareal(pr)
pr.initialize(y1d_init)
pr.iterate()
y1d_pr = pr.state_mic
end_time_1 = time.clock()
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我摆脱这个错误吗?

python numpy python-2.7

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

如何对股票数据的结构化列表进行排序以供以后在 Python 中访问?

我对 Python 非常陌生,想构建一个黑盒股票交易程序,该程序可以找到股票收益率之间的各种相关性,并给出买入、卖出、持有等响应。我发现了一个简洁易用的 Python 模块用于检索名为 ystockquote 的股票数据,该数据从 Yahoo! 金融。该模块可以在http://www.goldb.org/ystockquote.html找到

它的功能之一是以以下形式输出股票的历史价格 ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Clos']。我可以给它一个日期范围来执行此操作,它给我一个嵌套列表,其中包含一个包含每天的上述信息的列表。

我的问题是如何将这些单独的数据点(日期、开盘价、最高价、最低价等)组织成一个结构,以便我稍后在脚本中调用并进行排序。我需要这个过程易于自动化。我可能会发现哪些算法或数据结构有用?

python dictionary stocks list yahoo-api

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

Python风格:我应该避免评论我的import语句吗?

我会尝试尽可能地将其作为封闭式问题:

我经常发现我有一组进口,如一堆进口; 但是稍后我可能删除或移动使用这些导入项目的代码部分到另一个文件.问题是我经常忘记为什么我使用特定的导入(例如,我经常使用Counter类,或者来自itertools的随机内容.)因此我可能希望有注释来指定我的导入的内容; 这样,如果我不再需要它们,我可以删除整个块.

使用我的import语句进行注释是否被认为是不好的风格?

python import comments coding-style

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