小编Dav*_*son的帖子

求和列表中每个元组的第二个值

我有这样的结构:

structure = [('a', 1), ('b', 3), ('c', 2)]
Run Code Online (Sandbox Code Playgroud)

我想1+3+2使用sum()内置方法(在一行中)对整数()求和.

有任何想法吗?

python

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

为什么glm.nb仅在非常具体的输入上抛出"缺失值"错误

glm.nb在某些输入上抛出异常错误.虽然有多种值导致此错误,但即使非常轻微地更改输入也可以防止错误.

一个可重复的例子:

set.seed(11)
pop <- rnbinom(n=1000,size=1,mu=0.05)
glm.nb(pop~1,maxit=1000)
Run Code Online (Sandbox Code Playgroud)

运行此代码会引发错误:

Error in while ((it <- it + 1) < limit && abs(del) > eps) { : 
  missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

起初我认为这与算法没有收敛有关.但是,我很惊讶地发现即使非常轻微地改变输入也可以防止错误.例如:

pop[1000] <- pop[1000] + 1
glm.nb(pop~1,maxit=1000)
Run Code Online (Sandbox Code Playgroud)

我发现它在1到500之间的19.4%的种子上引发了这个错误:

fit.with.seed = function(s) {
    set.seed(s)
    pop <- rnbinom(n=1000, size=1, mu=0.05)
    m = glm.nb(pop~1, maxit=1000)
}

errors = sapply(1:500, function(s) {
    is.null(tryCatch(fit.with.seed(s), error=function(e) NULL))
})

mean(errors)
Run Code Online (Sandbox Code Playgroud)

我发现在任何地方只有一个提到这个错误,在一个没有响应的线程上.

可能导致此错误的原因是什么,以及如何修复(除了每次glm.nb抛出错误时随机置换输入?)

ETA:设置control=glm.control(maxit=200,trace = 3)发现theta.ml算法因非常大而破坏,然后成为 …

statistics r

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

如何解析其类存在于不同命名空间(python)中的对象?

如果我有一个定义类的脚本:

script = """

class myClass:
    def __init__(self):
        self.name = 'apple'
        self.color = 'green'

"""
Run Code Online (Sandbox Code Playgroud)

然后在自己的命名空间dict中执行此脚本:

NS = {}
exec script in NS
Run Code Online (Sandbox Code Playgroud)

然后创建一个类的实例并将其pickle:

a = NS['myClass']()

import pickle

save = pickle.dumps(a)
Run Code Online (Sandbox Code Playgroud)

现在,如果我试图取消它:

load = pickle.loads(save)
Run Code Online (Sandbox Code Playgroud)

我收到了错误

AttributeError: 'module' object has no attribute 'myClass'
Run Code Online (Sandbox Code Playgroud)

我认为这不起作用,因为python不知道在哪里找到myClass以重建对象.但myClass确实存在于NS dict中.有没有办法告诉pickle在哪里找到它正在加载的对象的类?

python pickle

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

高效的大学课程安排

我目前正在建立一个网站,允许我大学的学生根据他们想要的课程自动生成有效的时间表.

在开展网站工作之前,我决定解决如何有效安排课程的问题.

一些澄清:

  1. 我们大学的每门课程(我假设在其他所有大学)都包含一个或多个部分.因此,例如,微积分I目前有4个部分可用.这意味着,根据部分的数量,以及课程是否有实验室,这会极大地影响调度过程.

  2. 我们大学的课程使用主题缩写和课程代码的组合来表示.在微积分I的情况下:MATH 1110.

  3. CRN是一个部分唯一的代码.

  4. 我所在的大学并不喜欢,这意味着男性和女性在(几乎)不同的校园里学习.我的意思几乎就是校园分为两部分.

  5. datetime和timeranges dicts旨在减少对datetime.datetime.strptime()的调用,这是一个真正的瓶颈.

我的第一次尝试包括连续循环算法直到找到30个时间表.通过从一个输入的课程中随机选择一个部分,然后尝试从剩余的课程中放置部分来尝试构建有效的时间表来创建时间表.如果并非所有课程都符合时间表,即存在冲突,则会取消时间表并继续循环.

显然,上述解决方案存在缺陷.该算法运行时间太长,并且过于依赖随机性.

第二种算法与旧算法完全相反.首先,它使用itertools.product()生成所有可能的计划组合的集合.然后,它会遍历计划,将任何无效的计划交叉.为了确保各个部分,在验证之前调度计划组合(random.shuffle()).同样,涉及到一些随机性.

经过一些优化后,我能够让调度程序在1秒内运行,平均时间表包含5个课程.这很好,但一旦你开始添加更多课程,问题就开始了.

为了给你一个想法,当我提供一组输入时,可能的组合数量太大,以至于itertools.product()不会在合理的时间内终止,并且在此过程中会占用1GB的RAM.

显然,如果我要将其作为服务,我将需要更快,更有效的算法.在线和IRC中出现了两个:动态编程和遗传算法.

动态编程不能应用于这个问题,因为如果我正确地理解了这个概念,它会将问题分解成更小的部分,单独解决这些部分,然后将这些部分的解决方案结合在一起形成一个完整的解决方案.据我所知,这不适用于此.

至于遗传算法,我对它们了解不多,甚至无法理解如何在这种情况下应用它.我也理解GA对于一个非常大的问题空间会更有效,而且这并不是那么大.

我有什么替代品?我可以采取一种相对可以理解的方法来解决这个问题吗?或者我应该坚持我所拥有的并希望下个学期没有多少人决定参加8门课程?

我不是一个伟大的作家,所以我很抱歉这个问题含糊不清.请随时要求澄清,我会尽力帮助.

这是完整的代码.

http://bpaste.net/show/ZY36uvAgcb1ujjUGKA1d/

注意:很抱歉使用误导性标记(计划).

python algorithm scheduling

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

将密码从Drupal 7迁移到Django

我正在将一个站点从Drupal 7迁移到Django 1.4,包括当前用户.如何使用Drupal散列的密码?

根据,Drupal 7的使用SHA-512(它们被存储在开头"$ S $"的字符串的形式)散列的口令.

Django 1.4现在包含许多用于存储密码的选项,默认值为SHA-256,但我找不到SHA-512的选项.虽然这个应用程序似乎允许使用SHA2算法,但我不确定它是否与Django 1.4兼容(因为1.4具有灵活的密码哈希).

最简单的方法是什么?

ETA:我已经构建了一个模拟Drupal算法并使迁移变得简单的密码哈希.由于我已经接受了答案,我不会接受,但对于任何想要将Drupal转移到Django迁移的人来说,代码存储在Django片段GitHub的要点上.

passwords django cryptography drupal sha

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

如何在调试时获得返回值?

我看了看SO,但找不到答案,我确定它在那里虽然......?

在调试时,如果我在其上放置断点,如何获取return语句的值?我喜欢凝聚成一条线,只是看起来很漂亮.但我目前没有,因为我无法弄清楚如何调试返回的结果......?

using (IUnitOfWork context = new EFUnitOfWork())
{
    var repo = new ReportRepository(context);
    return repo.GetProcedureReport(startDate, endDate).ToList();
    //return result.ToList();
}
Run Code Online (Sandbox Code Playgroud)

c# debugging visual-studio visual-studio-debugging visual-studio-2012

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

使用dplyr执行bootstrap复制

我有兴趣使用dplyr来构建bootstrap复制(重复分析,其中每次首次采样替换数据).Hadley Wickham 在这里提供了一些有效重复引导分析的代码:

bootstrap <- function(df, m) {
  n <- nrow(df)

  attr(df, "indices") <- replicate(m, sample(n, replace = TRUE), 
    simplify = FALSE)
  attr(df, "drop") <- TRUE
  attr(df, "group_sizes") <- rep(n, m)
  attr(df, "biggest_group_size") <- n
  attr(df, "labels") <- data.frame(replicate = 1:m)
  attr(df, "vars") <- list(quote(boot)) # list(substitute(bootstrap(m)))
  class(df) <- c("grouped_df", "tbl_df", "tbl", "data.frame")

  df
}

library(dplyr)
mboot <- bootstrap(mtcars, 10)

# Works
mboot %.% summarise(mean(cyl))
Run Code Online (Sandbox Code Playgroud)

虽然此函数适用于此功能summarise,但它dodo包含data.frame 时不起作用.(想象一下,data.frame包含一些有用的东西,比如我们希望引导的分析结果).

bootstrap(mtcars, 3) %>% do(data.frame(x=1:2))
# Error: …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

R-3.2.1无法加载共享对象internet.so.

将R从3.1.3升级到3.2.1后,我无法从CRAN安装软件包.错误消息是无法加载共享对象internet.so.

install.packages("randomForest")
Installing package into ‘/gs/project/feb-684-aa/BIF/R/R-3.2.1/library’ (as ‘lib’ is unspecified)
--- Please select a CRAN mirror for use in this session ---
Error in url("http://cran.r-project.org/CRAN_mirrors.csv") : 
  internet routines cannot be loaded
In addition: Warning message:
In url("http://cran.r-project.org/CRAN_mirrors.csv") :
  unable to load shared object '/software/areas/ircm/tools/R-3.2.1/lib64/R/modules//internet.so':
  /software/areas/ircm/tools/R-3.2.1/lib64/R/modules//internet.so: undefined symbol: curl_multi_wait
> sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-unknown-linux-gnu (64-bit)
Running under: CentOS release 6.5 (Final)

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_CA.UTF-8        LC_COLLATE=en_CA.UTF-8    
 [5] LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_CA.UTF-8   
 [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] …
Run Code Online (Sandbox Code Playgroud)

installation r package cran

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

Django查询集和生成器

突然之间,我想知道使用生成器迭代结果集的以下方式是否会对正常迭代产生任何正面或负面影响?

例如.

def all_items_generator():
  for item in Item.objects.all():
    yield item

for item in all_items_generator():
  do_stuff_with_item(item)
Run Code Online (Sandbox Code Playgroud)

反对:

for item in Item.objects.all():
  do_stuff_with_item(item)
Run Code Online (Sandbox Code Playgroud)

python iteration django generator

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

为什么在与多个Popen子进程一起使用时会传递死锁?

Python 2.7.3 中不会发生以下问题.但是,它在我的机器上运行Python 2.7.1和Python 2.6(64位Mac OSX 10.7.3).这是我最终将分发的代码,因此我想知道是否有任何方法可以完成此任务,而不是如此显着地依赖于Python版本.

我需要并行打开多个子进程并将STDIN数据写入每个子进程.通常我会使用该Popen.communicate方法执行此操作.但是,communicate每当我同时打开多个进程时,就会死锁.

import subprocess

cmd = ["grep", "hello"]
processes = [subprocess.Popen(cmd, stdin=subprocess.PIPE,
                              stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                                for _ in range(2)]

for p in processes:
    print p.communicate("hello world\ngoodbye world\n")
Run Code Online (Sandbox Code Playgroud)

如果我将进程数更改为for _ in range(1),则输出与预期一致:

('hello world\n', '')
Run Code Online (Sandbox Code Playgroud)

但是,当有两个进程(for _ in range(2))时,进程将无限期地阻塞.我尝试过手动写入stdin的替代方法:

for p in processes:
    p.stdin.write("hello world\ngoodbye world\n")
Run Code Online (Sandbox Code Playgroud)

但是,任何从进程中读取的尝试(p.stdout.read()例如)仍然是死锁.

起初似乎是相关的,但是它指定它在使用多个线程时发生,并且死锁仅在很少发生(在这里总是发生).有什么方法可以让它在2.7.3之前的Python版本上运行吗?

python subprocess multiprocessing python-2.7

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