几周前,我问了一个关于提高用Python编写的函数速度的问题.那时,TryPyPy引起了我注意使用Cython这样做的可能性.他还举了一个例子,说明我如何Cythonize该代码片段.我想对下面的代码做同样的事情,看看通过声明变量类型我能做多快.我有几个与此相关的问题.我在cython.org上看过教程,但我还是有一些问题.它们密切相关:
doubleCython float.我该怎么做列表?通常,我在哪里可以找到给定Python类型的相应C类型.我如何对下面的代码进行Cython化的任何例子都会非常有用.我在代码中插入了注释,提供有关变量类型的信息.
class Some_class(object):
** Other attributes and functions **
def update_awareness_status(self, this_var, timePd):
'''Inputs: this_var (type: float)
timePd (type: int)
Output: None'''
max_number = len(self.possibilities)
# self.possibilities is a list of tuples.
# Each tuple is a pair of person objects.
k = int(math.ceil(0.3 * max_number))
actual_number = random.choice(range(k))
chosen_possibilities = random.sample(self.possibilities,
actual_number)
if len(chosen_possibilities) > 0:
# chosen_possibilities is a list of tuples, each tuple is a pair
# of person objects. …Run Code Online (Sandbox Code Playgroud) 假设我有以下numpy数组:
a = [[1, 5, 6],
[2, 4, 1],
[3, 1, 5]]
Run Code Online (Sandbox Code Playgroud)
我想掩盖1第一列中的所有行.那就是我想要的
[[--, --, --],
[2, 4, 1],
[3, 1, 5]]
Run Code Online (Sandbox Code Playgroud)
这是否可以使用numpy蒙面数组操作?怎么能这样做?
谢谢.
请查看以下代码行和结果:
import pymongo
d1 = {'p': 0.5, 'theta': 100, 'sigma': 20}
d2 = {'theta': 100, 'sigma': 20, 'p': 0.5}
I get the following results:
d1 == d2 // Returns True
collectn.find({'goods.H': d1}).count() // Returns 33
collectn.find({'goods.H': d2}).count() // Returns 2
Run Code Online (Sandbox Code Playgroud)
其中,collectn是Mongodb集合对象.
是否有设置或查询方式,以便我获得上述两个查询相同的结果?
他们基本上是使用相同的字典(在意义上d1 == d2是True).我正在尝试执行以下操作:在将记录插入数据库之前,我检查是否已存在具有正在添加的确切值组合的记录.如果是这样,那么我不想创造新纪录.但是由于上面显示的行为,有可能得到记录不存在,即使它确实存在并且重复记录被添加到数据库中(当然,使用不同的_id但所有其他值都是相同的,我宁愿没有那个).
预先感谢您的帮助.
我有一个程序输出一些我想要存储的列表以便以后使用.例如,假设它输出学生姓名列表和其他中期分数列表.我可以通过以下两种方式存储此输出:
标准文件输出方式:
newFile = open('trialWrite1.py','w')
newFile.write(str(firstNames))
newFile.write(str(midterm1Scores))
newFile.close()
Run Code Online (Sandbox Code Playgroud)
泡菜方式:
newFile = open('trialWrite2.txt','w')
cPickle.dump(firstNames, newFile)
cPickle.dump(midterm1Scores, newFile)
newFile.close()
Run Code Online (Sandbox Code Playgroud)
哪种技术更好还是首选?使用一个优于另一个有优势吗?
谢谢
假设我有以下数据框:
df1 = data.frame(c11 = c(1:5), c12 = c(1:5))
df2 = data.frame(c21 = c(1:5), c22 = (c(1:5))^0.5)
df3 = data.frame(c31 = c(1:5), c32 = (c(1:5))^2)
Run Code Online (Sandbox Code Playgroud)
我想在相同的情节/面板中将这些绘制为线条.我可以做到这一点
p <- ggplot() + geom_line(data=df1, aes(x=c11, y = c12)) +
geom_line(data=df2, aes(x=c21,y=c22)) +
geom_line(data=df3, aes(x=c31, c32))
Run Code Online (Sandbox Code Playgroud)
所有这些都是黑色的.如果我想要它们的颜色不同,我可以明确指定颜色作为参数geom_line().我的问题是我可以指定几种颜色的列表,比如5种颜色,例如红色,蓝色,绿色,橙色,灰色,并使用该列表,这样我就不必明确指定颜色作为geom_line的参数()如果是每一行.如果绘图p包含2个geom_line()语句,则它们将分别为红色和蓝色着色.如果它包含3个geom_line语句,它将为红色,蓝色和绿色着色.最后,如何为这些图指定图例.即使我可以在最后给出颜色作为矢量p也很棒.如果问题不明确,请告诉我.
谢谢.
我有一个pandas数据框,叫做df.
我想以gzip格式保存它.一种方法是:
import gzip
import pandas
df.save('filename.pickle')
f_in = open('filename.pickle', 'rb')
f_out = gzip.open('filename.pickle.gz', 'wb')
f_out.writelines(f_in)
f_in.close()
f_out.close()
Run Code Online (Sandbox Code Playgroud)
但是,这需要我先创建一个名为的文件filename.pickle.有没有办法更直接地做到这一点,即没有创造filename.pickle?
当我想加载已经gzip压缩的数据帧时,我必须完成创建filename.pickle的相同步骤.例如,要读取一个
filename2.pickle.gzipgzipped pandas数据帧的文件,我知道以下方法:
f_in = gzip.open('filename2.pickle.gz', 'rb')
f_out = gzip.open('filename2.pickle', 'wb')
f_out.writelines(f_in)
f_in.close()
f_out.close()
df2 = pandas.load('filename2.pickle')
Run Code Online (Sandbox Code Playgroud)
这可以不filename2.pickle先创建吗?
我最近遇到了Pytables并发现它非常酷.很明显,对于非常大的数据集,它们优于csv格式.我正在使用python运行一些模拟.输出不是很大,比如200列和2000行.
如果有人对两者都有经验,那么从长远来看,你能否建议哪种格式对于不是很大的数据集会更方便.Pytables具有数据处理功能和使用Vitables浏览数据,但浏览器没有像Excel那样可用于CSV的功能.同样,如果主要在python中工作,你是否找到一个比另一个更好的导入和导出数据?在文件组织方面更方便吗?对这些问题的任何评论都会有所帮助.
谢谢.
在这个很棒的论坛上,我看到了一篇文章,展示了如何将字符串转换为变量并为该变量分配数据框.例如:
x ="thisisthestring"
# df is a data frame
assign(x, df) # This will assign data frame df to variable thisisthestring
Run Code Online (Sandbox Code Playgroud)
我想要做的是使用名称保存此数据框thisisthestring.但是,如果我试试
assign(x, df)
save(x, file='somefilename.rda')
Run Code Online (Sandbox Code Playgroud)
该文件只包含一个字符串"thisisthestring"而不是数据框df.
我也试过了
save(assign(x, df), file = 'somefile.rda'))
Run Code Online (Sandbox Code Playgroud)
这也行不通.有关如何将数据帧保存到文件的任何建议,其中数据框的名称由字符串指定.
假设我有一个名为Meteor的集合GameStatus.我有不同角色的用户,但我为所有用户发布了GameStatus集合.我只是在server/publications.coffee中使用以下内容
Meteor.publish 'gamestatus', ->
GameStatus.find()
Run Code Online (Sandbox Code Playgroud)
对于两个角色("S"和"B")我有,当我使用下面的模板助手没有问题的(在文件中定义的客户端/视图/ seller.coffee和客户端/视图/ buyer.coffee)
currentRound: ->
return GameStatus.findOne().currentRound
Run Code Online (Sandbox Code Playgroud)
对于这些我永远不会得到以下错误.
Uncaught TypeError: Cannot read property 'currentRound' of undefined
Run Code Online (Sandbox Code Playgroud)
但是对于另一个角色('admin'),使用相同的模板助手(在文件client/views/admin.coffee中定义)给出了上面显示的Uncaught TypeError.如果我改为写,它可以工作:
currentRound: ->
return GameStatus.findOne()?.currentRound
Run Code Online (Sandbox Code Playgroud)
我有点理解为什么会这样.我认为,在加载页面时,该集合首先不可用,然后就可以使用了.但为什么上面显示的其他模板不会发生这种情况?
如果有人可以帮助澄清这一点,我们将非常感激.
我是R的新手,刚学会编写简单的函数.有人可以帮助我理解为什么以下功能不起作用.
fboxplot <- function(mydataframe, varx, vary)
{
p <- ggplot(data=mydataframe, aes(x=varx, y=vary))
p + geom_boxplot()
}
col1 = factor(rep(1:3, 3))
col2 = rnorm(9)
col3 = c(rep(10,5), rep(20,4))
df = data.frame(col1 = col1, col2 = col2, col3 = col3)
Run Code Online (Sandbox Code Playgroud)
现在,如果我调用fboxplot函数
fboxplot(df, col1, col2)
Run Code Online (Sandbox Code Playgroud)
我收到了错误Error in eval(expr, envir, enclos): object varx not found.我也试过了
fboxplot(df, varx = col1, vary = col2)
Run Code Online (Sandbox Code Playgroud)
这给出了同样的错误.我哪里错了?
谢谢你的帮助.