我已经阅读了sys文档,但有些内容仍然不清楚.我在stackoverflow上寻找了一些类似的问题,但我没有找到任何有用的东西(显然任何引用都很感激!).
我想创建一个脚本 - 比如说foo.py- 我希望从3到6个参数传递:
$ python foo.py arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
在任何情况下都必须给出前3个论点; 如果没有传递任何内容,则在具有默认参数值的函数中使用最后3个参数.
问题是我该怎么做?到目前为止,我正在考虑编写类似下面的内容foo.py(这是一个简单的示例集,仅用于具体支持我的问题):
import sys
def example(credit_mom, credit_dad, debt_mom, debt_dad = 1000,
salary = 2000, bonus = 0):
total_gain = salary + credit_dad + credit_mom + bonus
total_loss = debt_dad + debt_mom
return total_gain - total_loss
if __name__ == '__main__':
if len(sys.argv) < 4:
sys.exit('Need at least 3 arguments. The order is as follows:\n\
1.credit_mom;\n\
2.credit_dad;\n\
3.debt_mom;\n\
4.others')
else:
sys.exit(example(sys.argv[1],
sys.argv[2],
sys.argv[3],
sys.argv[4], …Run Code Online (Sandbox Code Playgroud) (这个问题最初发布于stats.O我搬到这里,因为它不具有关联.pymc在它与更普遍的问题:其实主要目的是为了有一个更好地了解如何pymc工作的.如果任版主的不要信.为了适合SO,我会从这里删除.)
我一直在这里和在SO中阅读pymc教程和许多其他问题.
我试图理解如何应用贝叶斯定理来计算使用某些数据的后验概率.特别是,我有一个独立参数元组
从数据中我想推断出可能性 ,哪里
是一个特定的事件.然后目标是计算
一些额外的评论:
pymc计算给定数据的可能性,然后对每个参数元组我想得到后验概率.在下面我会假设 并且可能性是多维正态分布
(因为独立).
以下是我正在使用的代码(为简单起见,假设只有两个参数).代码仍处于开发阶段(我知道它无法正常工作!).但我认为包含它是有用的,然后在注释和答案之后对其进行优化,以便为将来的参考提供框架.
class ObsData(object):
def __init__(self, params):
self.theta1 = params[0]
self.theta2 = params[1]
class Model(object):
def __init__(self, data):
# Priors
self.theta1 = pm.Uniform('theta1', 0, 100)
self.theta2 = pm.Normal('theta2', 0, 0.0001)
@pm.deterministic
def model(
theta1=self.theta1,
theta2=self.theta2,
):
return (theta1, theta2)
# Is this the actual likelihood?
self.likelihood = pm.MvNormal(
'likelihood',
mu=model,
tau=np.identity(2),
value=data, # …Run Code Online (Sandbox Code Playgroud) 我有一个字符串列表,每个字符串代表一个带或不带毫秒的时间,例如
l = ['03:18:45.2345', '03:19:23']
我想将每个字符串转换为日期时间对象。现在我正在运行:
>>> l = ['03:18:45.2345', '03:19:23']
>>> for item in l:
... print datetime.datetime.strptime(item, "%H:%M:%S.%f")
...
1900-01-01 03:18:45.234500
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '03:19:23' does not match format '%H:%M:%S.%f'
Run Code Online (Sandbox Code Playgroud)
因此,问题是:如何迭代转换对象中的每个元素的列表datetime?
第一个想法是try..except..:
try:
print datetime.datetime.strptime(item, "%H:%M:%S.%f")
except:
print datetime.datetime.strptime(item, "%H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到这一点而不抓住ValueError?
我正在使用crossfilter和构建许多图表dc.js。其中,有一个行图和一个直方图(条形图)。
我想要做的是在行图上创建一个工具提示,它将显示直方图。
看着这个SO-question我看到了一个使用d3-tip. 我在这个jsfiddle 中进行了尝试。但是,我看不到如何div在工具提示中嵌入 a 。
有什么建议吗?(如果使用普通d3的更好,我可以接受。)
代码片段是:
function draw_row(div_id){ ...; return row_chart; }
function draw_hist(div_id){ ...; return bar_chart; }
var rate_chart = draw_row('#rate').title(function(){return'';});
dc.renderAll();
var tip = d3.tip()
.attr('class', 'd3-tip')
.offset([-10, 0])
.html(function () {
// What to put in here???
draw_hist('#distr').render();
return "<div id='distr'>Distribution<br></div>"
});
d3.selectAll("#rate g.row")
.call(tip)
.on('mouseover', tip.show)
.on('mouseout', tip.hide);
Run Code Online (Sandbox Code Playgroud) 我有一个基类,一堆子类,对于每个子类,我有另一组子类.例如:
class BaseClass(object):
def __init__(self):
with open(config.txt) as f
self.config_array = f.readlines()
class FirstOrderSubClass(BaseClass):
def __init__(self, name):
self.name = name
class SecondOrderSubClass(FirstOrderSubClass):
def __init__(self, name, version):
self.name = name
self.version = version
super(SecondOrderSubClass, self).__init__(self.name)
# needed to access self.config_array
print self.config_array
Run Code Online (Sandbox Code Playgroud)
我需要得到__init__()的方法SecondOrderSubClass作如下分配:self.lines = self.config_array.
编辑:添加行print self.config_array.如果我运行代码我得到:
TypeError: __getattr__() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud) 这里询问如何将字典列表(具有匹配的键)转储到 csv 文件中。
我的问题是类似的,但是我假设字典不一定匹配键:在这种情况下,我希望该单元格没有值(或分配 None/0/..)。下面举例。
例子
to_csv = [{'name':'bob','age':25,'weight':200, 'height':181},
{'name':'jim','age':31,'weight':180}]
Run Code Online (Sandbox Code Playgroud)
应该变成:
name,age,weight,height
bob,25,200,181
jim,31,180,None
Run Code Online (Sandbox Code Playgroud)