我目前在我的机器上安装了Enthought Python Distribution,但我不想破坏它,但是我想看看从Continuum 转移到Anaconda.
我可以轻松地将Anaconda安装到我创建的virtualenv目录中,但我不知道如何告诉virtualenv使用anaconda-version的Python.如果我告诉我的整个系统使用它我可以改变.bash_profile类似的东西export PATH="/DIRECTORIES/anaconda/bin:$PATH.有没有办法在virtualenv中做到这一点?
可以说有一个文件存在于github repo:
https://github.com/someguy/brilliant/blob/master/somefile.txt
我正在尝试使用请求来请求此文件,将其内容写入当前工作目录中的磁盘,稍后可以使用它.现在,我正在使用以下代码:
import requests
from os import getcwd
url = "https://github.com/someguy/brilliant/blob/master/somefile.txt"
directory = getcwd()
filename = directory + 'somefile.txt'
r = requests.get(url)
f = open(filename,'w')
f.write(r.content)
Run Code Online (Sandbox Code Playgroud)
毫无疑问,丑陋,更重要的是,不工作.而不是预期的文本,我得到:
<!DOCTYPE html>
<!--
Hello future GitHubber! I bet you're here to remove those nasty inline styles,
DRY up these templates and make 'em nice and re-usable, right?
Please, don't. https://github.com/styleguide/templates/2.0
-->
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Page not found · GitHub</title>
<style type="text/css" media="screen">
body {
background: #f1f1f1;
font-family: "HelveticaNeue", …Run Code Online (Sandbox Code Playgroud) 我正在编写一个编程项目的过程,该项目涉及Python中一些非常广泛的蒙特卡罗模拟,因此产生了大量的随机数.几乎所有这些(如果不是全部的话)都可以通过Python的内置随机模块生成.
我是一个编码新手,并且不熟悉高效和低效的做事方式.生成say,所有随机数作为列表,然后遍历该列表,或者每次调用一个函数时生成一个新的随机数,这将是一个非常大的循环?
或者其他一些,无疑是更聪明的方法?
我正在实施一个非常简单的易感染感染恢复模型,该模型具有稳定的空闲侧项目 - 通常是一项非常简单的任务.但是我使用PysCeS或SciPy遇到了求解器错误,两者都使用lsoda作为它的底层求解器.这只发生在参数的特定值上,我很难理解为什么.我正在使用的代码如下:
import numpy as np
from pylab import *
import scipy.integrate as spi
#Parameter Values
S0 = 99.
I0 = 1.
R0 = 0.
PopIn= (S0, I0, R0)
beta= 0.50
gamma=1/10.
mu = 1/25550.
t_end = 15000.
t_start = 1.
t_step = 1.
t_interval = np.arange(t_start, t_end, t_step)
#Solving the differential equation. Solves over t for initial conditions PopIn
def eq_system(PopIn,t):
'''Defining SIR System of Equations'''
#Creating an array of equations
Eqs= np.zeros((3))
Eqs[0]= -beta * (PopIn[0]*PopIn[1]/(PopIn[0]+PopIn[1]+PopIn[2])) - …Run Code Online (Sandbox Code Playgroud) 考虑以下NumPy数组:
a = np.array([[1,4], [2,1],(3,10),(4,8)])
Run Code Online (Sandbox Code Playgroud)
这给出了一个如下所示的数组:
array([[ 1, 4],
[ 2, 1],
[ 3, 10],
[ 4, 8]])
Run Code Online (Sandbox Code Playgroud)
我要做的是找到第二列的最小值(在这种情况下为1),然后报告该对的另一个值(在这种情况下为2).我尝试过像argmin这样的东西,但是第一列中的1被绊倒了.
有办法轻松做到这一点吗?我也考虑过对数组进行排序,但我似乎无法以一种将对保持在一起的方式工作.数据是通过如下所示的循环生成的,所以如果有一种更简单的方法可以做到这不是一个numpy数组,我也会把它作为一个答案:
results = np.zeros((100,2))
# Loop over search range, change kappa each time
for i in range(100):
results[i,0] = function1(x)
results[i,1] = function2(y)
Run Code Online (Sandbox Code Playgroud) 我是一个公认的非常基本的Python程序员,在我遇到实现各种研究问题的问题时试图学习.而且我遇到了其中一个问题 - 特别是如何处理我返回一堆数据的循环,而不是通常的"输出单个数字"示例,您只需将循环结果添加到以前的所有内容中.
这是我正在尝试运行的非循环脚本的要点:https://gist.github.com/1390355
真正突出的一点是model_solve函数的结束:
def model_solve(t):
# lots of variables set
params = np.zeroes((n_steps,n_params)
params[:,0] = beta
params[:,1] = gamma
timer = np.arange(n_steps).reshape(n_steps,1)
SIR = spi.odeint(eq_system, startPop, t_interval)
output = np.hstack((timer,SIR,params))
return output
Run Code Online (Sandbox Code Playgroud)
这将返回ODE积分位(spi.odeint)的结果以及一个简单的"我们开什么时间步骤?" 计时器和两个随机变量的值基本上是两列,重复很多次,形式为4950行和7列NumPy数组.
然而,目标是对具有随机值的两个参数(β和γ)进行蒙特卡罗分析.从本质上讲,我想创建一个循环的函数:
def loop_function(runs):
for i in range(runs):
model_solve(100)
# output of those model_solves collected here
# return collected output
Run Code Online (Sandbox Code Playgroud)
然后将收集的输出写入文件.通常,我只是让每个model_solve函数将其结果写入一个文件,但是这个代码将在PiCloud或其他平台上运行,在这个平台上我不一定能够编写文件,直到结果返回到本地机器.相反,我正在尝试返回一个巨大的NumPy数组runs*7列和4950行 - 然后可以将其写入本地计算机上的文件.
有关如何处理此问题的任何线索?
我目前有一个在PiCloud上运行的项目,涉及ODE解算器的多次迭代.每次迭代都会生成一个大约30行和1500列的NumPy数组,每次迭代都会附加到前面结果数组的底部.
通常情况下,我只是让函数返回这些相当大的数组,将它们保存在内存中并在一个处理它们.除了 PiCloud对数据大小有相当限制的限制,可以通过函数返回和退出数据,以降低传输成本.哪个很好,除了这意味着我必须启动数千个作业,每个作业都在迭代中运行,而且开销很大.
看来最好的解决方案是将输出写入文件,然后使用其他没有传输限制的函数收集文件.
我最好的办法是将其转储到CSV文件中吗?我应该在每次迭代时添加到CSV文件中,还是将其全部保存在数组中直到结束然后只写一次?我有什么特别聪明的东西吗?
我在SAS LIFEREG中有一个加速故障时间模型,我想绘制.因为SAS在绘图时非常糟糕,所以我想实际重新生成R中曲线的数据并将其绘制在那里.SAS推出了一个量表(在指数分布固定为1的情况下),一个截距,以及一个在暴露或未暴露人群中的回归系数.
有两条曲线,一条用于暴露,一条用于未暴露的人口.其中一个模型是指数分布,我已经生成了数据和图形,如下所示:
intercept <- 5.00
effect<- -0.500
data<- data.frame(time=seq(0:180)-1)
data$s_unexposed <- apply(data,1,function(row) exp(-(exp(-intercept))*row[1]))
data$s_exposed <- apply(data,1,function(row) exp(-(exp(-(intercept+effect))*row[1])))
plot(data$time,data$s_unexposed, type="l", ylim=c(0,1) ,xaxt='n',
xlab="Days since Infection", ylab="Percent Surviving", lwd=2)
axis(1, at=c(0, 20, 40, 60, 80, 100, 120, 140, 160, 180))
lines(data$time,data$s_exposed, col="red",lwd=2)
legend("topright", c("ICU Patients", "Non-ICU Patients"), lwd=2, col=c("red","black") )
Run Code Online (Sandbox Code Playgroud)
这给了我这个:

不是最漂亮的图表,但我真的不知道我的方式围绕ggplot2足以修饰它.但更重要的是,我有第二组数据来自Log Normal分布,而不是指数,我为此生成数据的尝试完全失败了 - 将cdf合并到正态分布等等它超越了我的R技能.
任何人都可以指向正确的方向,使用相同的数字,并且比例参数为1?
我在一个项目中遇到了一个问题,在该项目中,能够将大量(数十个,而不是数百个)参数传递给 Python 中的单个“一次编写,多次使用”函数可能很有用。问题是,我不确定处理这样一大块函数的最佳方法是什么 - 只需将它们作为单个字典传入并在函数中解压该字典,或者是否有更高效的/pythonic达到同样效果的方法。
我正在尝试在SAS中计算一个依赖于自身的列.例如,我有以下初始值列表
ID Var_X Var_Y Var_Z
1 2 3 .
2 . 2 .
3 . . .
4 . . .
5 . . .
6 . . .
7 . . .
Run Code Online (Sandbox Code Playgroud)
我需要填补空白区域.公式如下:
Var_Z = 0.1 + 4*Var_x + 5*Var_Y
Var_X = lag1(Var_Z)
Var_Y = lag2(Var_Z)
Run Code Online (Sandbox Code Playgroud)
当我们看到Var_X的值时,Var_Y和Var_Z是相互依赖的.因此,计算需要遵循特定的顺序.
First we compute when ID = 1, Var_Z = 0.1 + 4*2 + 5*3 = 23.1
Next, when ID = 2, Var_X = lag1(Var_Z) = 23.1
Run Code Online (Sandbox Code Playgroud)
Var_Y不需要在ID = 2时进行计算,因为我们在这里已经有了初始值.所以,我们有
ID Var_X Var_Y …Run Code Online (Sandbox Code Playgroud)