小编Wil*_*uck的帖子

如何在某些数据结构中表示奇怪的图形

表示图形的简单方法是使用以下形式的数据结构:

{1:[2,3],
 2:[1,3],
 3:[1,2]}
Run Code Online (Sandbox Code Playgroud)

此字典中的键是节点,并且边缘由它们连接的其他节点的列表表示.如果链接不对称,则此数据结构也可以轻松表示有向图:

{1:[2],
 2:[3],
 3:[1]}
Run Code Online (Sandbox Code Playgroud)

我对图理论知之甚少,所以我要提出的建议可能已经有了一个简单的解决方案,但我不知道该寻找什么.我遇到的情况是图形有些指向,取决于您所在的节点和您来自的节点.为了说明,我有一张图:

奇怪的方向图

想象一下你在卡丁车中沿着边缘A加速,而在节点1处,你将左边悬挂在边缘B上.由于你走得太快,当你击中节点3时,你被迫继续前进到边缘F.但是,如果你来自边缘F,你将能够继续前进到边缘E或B.很明显,节点3连接到1和2,但是否可以从该节点到达它们取决于哪个你来自哪个方向.

我想知道是否有一个图论理论概念描述了这个和/或是否有一个简单的数据结构来描述它.虽然我将在python中编写代码,但我会从任何合理适用的语言中获取建议.

编辑:我试图发布一个图像与此同时,但我不确定它是否出现.如果它不在这里是图像的链接

编辑2:我应该清楚.发布的图像是完整图形的一部分,其中屏幕上有更多节点来自A,D和F.

python language-agnostic graph data-structures

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

广泛使用python的getattr是不好的做法吗?

我正在创建一个像shell一样的环境.我处理用户输入的原始方法是使用字典映射命令(字符串)到各种类的方法,利用函数是python中的第一类对象的事实.

为了灵活性(主要用于解析命令),我正在考虑更改我的设置,以便我使用getattr(命令),获取我需要的方法,然后在我的解析器末尾将参数传递给它.这种方法的另一个优点是每次添加新方法/命令时都不必更新我的(当前静态实现的)命令字典.

我的问题是双重的.首先,getattr和eval有同样的问题吗?第二,我是否会对我的shell的效率产生影响?我有多少方法/命令是否重要?我目前正在查看30个命令,最终可能翻倍.

python shell performance getattr

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

加载其他人的.rdata文件,无法访问数据

我的教授给我发了一个.rdata文件,希望我对内容做一些分析.虽然我对R很体面,但我从未在.rdata文件中保存我的工作,因此从未使用过它们.

当我尝试加载文件时,它看起来像是在工作:

> load('/home/swansone/Desktop/anes.rdata')
> ls()
[1] "25383-0001-Data"
Run Code Online (Sandbox Code Playgroud)

但我似乎无法得到数据:

> names("25383-0001-Data")
NULL
Run Code Online (Sandbox Code Playgroud)

我知道.rdata文件中有数据(它是13 MB,肯定有很多)我做错了吗?我不知所措.

编辑:

我应该注意,我也尝试过不使用引号:

> names(25383-0001-Data)
Error: object "Data" not found
Run Code Online (Sandbox Code Playgroud)

并重命名:

> ls()[1] <- 'nes'
Error in ls()[1] <- "nes" : invalid (NULL) left side of assignment
Run Code Online (Sandbox Code Playgroud)

load r

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

找到多项式的导数

我象征性地想知道如何将多项式解析成函数并返回导数.我将使用什么数据结构或解析多项式的方法?最好不要使用任何库,因为这个问题可能会在技术面试中出现.

polynomial-> of nth degree

def derivative(polynomial):
    return derivative

Example:

f(x)  = 2x^2+3x+1
f'(x) = 4x+3
Run Code Online (Sandbox Code Playgroud)

我不想要一个解决方案,这不是作业,而是一个我要从哪里开始的暗示.

python math

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

将列表的元素作为参数传递给python中的函数

我正在python中构建一个简单的解释器,我在处理函数的不同数量的参数时遇到了麻烦.我目前的方法是获取命令/参数列表,如下所示.

args = str(raw_input('>> ')).split()
com = args.pop(0)
Run Code Online (Sandbox Code Playgroud)

然后执行com,我检查它是否在我的命令 - >代码映射字典中,如果是,我调用我存储在那里的函数.对于没有参数的命令,这看起来像:

commands[com]()
Run Code Online (Sandbox Code Playgroud)

但是,如果一个命令有多个参数,我会想要这个:

commands[com](args[0],args[1])
Run Code Online (Sandbox Code Playgroud)

有没有一些技巧我可以将我的arg列表的一些(或全部)元素传递给我试图调用的函数?或者有没有更好的方法来实现它而不必使用python的cmd类?

python arguments list

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

Stata:检查本地宏是否未定义

我正在写一个Stata do文件,如果用户不提供某些参数,我想提供默认值.为此,我想检查宏是否未定义.

我想出了一个hacky方法来做到这一点:

*** For a local macro with the name value:
if `value'1 != 1 {
    ...do stuff
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有惯用的方法来做到这一点.

undefined stata stata-macros

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

将最后一个输出捕获为R对象

可能重复:
如何将前一个表达式的结果赋值给R中的变量?

我在ESS中使用R并且犯了一个愚蠢的错误,即运行长时间运行的函数而不将结果赋给变量.所以,它只是打印出结果,一长串输出看起来像:

[[1]]
1 FALSE
[[2]]
1 TRUE
[[3]]
1 TRUE
[[4]]
1 TRUE 
Run Code Online (Sandbox Code Playgroud)

有没有办法将此打印输出强制转换为R对象?在R内,还是使用emacs(Mx undo-my-stupid-wrong)?

r ess

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

Python:在一般情况下,a可以舍入为b

作为我正在编写的一些单元测试代码的一部分,我编写了以下函数.其目的是确定'a'是否可以舍入为'b',无论'a'或'b'有多精确.

def couldRoundTo(a,b):
    """Can you round a to some number of digits, such that it equals b?"""
    roundEnd = len(str(b))
    if a == b:
        return True
    for x in range(0,roundEnd):
        if round(a,x) == b:
            return True
    return False
Run Code Online (Sandbox Code Playgroud)

这是函数的一些输出:

>>> couldRoundTo(3.934567892987, 3.9)
True
>>> couldRoundTo(3.934567892987, 3.3)
False
>>> couldRoundTo(3.934567892987, 3.93)
True
>>> couldRoundTo(3.934567892987, 3.94)
False
Run Code Online (Sandbox Code Playgroud)

据我所知,它有效.但是,考虑到我没有完全掌握有关浮点精度的问题,我害怕依赖它.有人能告诉我这是否是实现此功能的合适方式?如果没有,我怎么能改善它?

python floating-point rounding

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

R:计算面板数据中的5年平均值

在数据框架中,我从1951年到2007年按国家/地区划分了一个平衡的面板.我想将其转换为我的其他变量的五年平均值的新数据框架.当我坐下来做这个时,我意识到我能想到的唯一方法是做一个for循环,然后决定是时候来stackoverflow寻求帮助了.

那么,是否有一种简单的方法来转换如下所示的数据:

country   country.isocode year      POP           ci      grgdpch
Argentina             ARG 1951 17517.34 18.445022145 3.4602044759
Argentina             ARG 1952 17876.96  17.76066507 -7.887407586
Argentina             ARG 1953 18230.82 18.365255769 2.3118720688
Argentina             ARG 1954 18580.56 16.982113434 1.5693778844
Argentina             ARG 1955 18927.82 17.488907008 5.3690276523
Argentina             ARG 1956 19271.51 15.907756547 0.3125559183
Argentina             ARG 1957 19610.54 17.028450999 2.4896639667
Argentina             ARG 1958 19946.54 17.541597134 5.0025894968
Argentina             ARG 1959 20281.15 16.137310492 -6.763501447
Argentina             ARG 1960 20616.01 20.519539628  8.481742144
...
Venezuela             VEN 1997 22361.80 21.923577413  5.603872759
Venezuela             VEN 1998 …
Run Code Online (Sandbox Code Playgroud)

r transform

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

R:避免summary.plm

我正在使用R来运行蒙特卡罗模拟,研究面板数据估计器的性能.因为我将进行大量的试验,所以我需要从我的代码中获得至少不错的性能.

Rprof在我的模拟的10次试验中使用表明,很大一部分时间花在了呼叫上summary.plm.前几行Rprofsummary提供如下:

$by.total
                            total.time total.pct self.time self.pct
"trial"                          54.48     100.0      0.00      0.0
"coefs"                          53.90      98.9      0.06      0.1
"model.matrix"                   36.72      67.4      0.10      0.2
"model.matrix.pFormula"          35.98      66.0      0.06      0.1
"summary"                        33.82      62.1      0.00      0.0
"summary.plm"                    33.80      62.0      0.08      0.1
"r.squared"                      29.00      53.2      0.02      0.0
"FUN"                            24.84      45.6      7.52     13.8
Run Code Online (Sandbox Code Playgroud)

我正在调用summary我的代码,因为我需要得到系数估计的标准误差以及系数本身(我可以从plm对象得到).我的电话看起来像

regression <- plm(g ~ y0 + Xit, data=panel_data, model=model, index=c("country","period"))

coefficients_estimated <- summary(regression)$coefficients[,"Estimate"]
ses_estimated <- summary(regression)$coefficients[,"Std. Error"]
Run Code Online (Sandbox Code Playgroud)

我有一种唠叨的感觉,这是一个巨大的浪费cpu时间,但我不知道R如何做的事情,以避免调用摘要.我很欣赏有关幕后发生的事情的任何信息,或者某些方法可以减少这种情况.

optimization profiling r summary plm

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