小编Fom*_*ite的帖子

将Anaconda安装到虚拟环境中

我目前在我的机器上安装了Enthought Python Distribution,但我不想破坏它,但是我想看看从Continuum 转移到Anaconda.

我可以轻松地将Anaconda安装到我创建的virtualenv目录中,但我不知道如何告诉virtualenv使用anaconda-version的Python.如果我告诉我的整个系统使用它我可以改变.bash_profile类似的东西export PATH="/DIRECTORIES/anaconda/bin:$PATH.有没有办法在virtualenv中做到这一点?

python virtualenv anaconda conda virtual-environment

29
推荐指数
2
解决办法
3万
查看次数

如何使用请求从Github下载和写入文件

可以说有一个文件存在于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 &middot; GitHub</title>
    <style type="text/css" media="screen">
      body {
        background: #f1f1f1;
        font-family: "HelveticaNeue", …
Run Code Online (Sandbox Code Playgroud)

python github python-requests

18
推荐指数
3
解决办法
2万
查看次数

在Python中生成和使用数百万随机数的有效方法

我正在编写一个编程项目的过程,该项目涉及Python中一些非常广泛的蒙特卡罗模拟,因此产生了大量的随机数.几乎所有这些(如果不是全部的话)都可以通过Python的内置随机模块生成.

我是一个编码新手,并且不熟悉高效和低效的做事方式.生成say,所有随机数作为列表,然后遍历该列表,或者每次调用一个函数时生成一个新的随机数,这将是一个非常大的循环?

或者其他一些,无疑是更聪明的方法?

python random

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

奇怪的SciPy ODE集成错误

我正在实施一个非常简单的易感染感染恢复模型,该模型具有稳定的空闲侧项目 - 通常是一项非常简单的任务.但是我使用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)

python scipy ode

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

查找numpy数组中的最小值以及该数组行的其余部分的相应值

考虑以下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 numpy

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

从返回NumPy Arrays的循环中收集结果

我是一个公认的非常基本的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行 - 然后可以将其写入本地计算机上的文件.

有关如何处理此问题的任何线索?

python numpy

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

将大型NumPy数组写入文件的有效方法

我目前有一个在PiCloud上运行的项目,涉及ODE解算器的多次迭代.每次迭代都会生成一个大约30行和1500列的NumPy数组,每次迭代都会附加到前面结果数组的底部.

通常情况下,我只是让函数返回这些相当大的数组,将它们保存在内存中并在一个处理它们.除了 PiCloud对数据大小有相当限制的限制,可以通过函数返回和退出数据,以降低传输成本.哪个很好,除了这意味着我必须启动数千个作业,每个作业都在迭代中运行,而且开销很大.

看来最好的解决方案是将输出写入文件,然后使用其他没有传输限制的函数收集文件.

我最好的办法是将其转储到CSV文件中吗?我应该在每次迭代时添加到CSV文件中,还是将其全部保存在数组中直到结束然后只写一次?我有什么特别聪明的东西吗?

python numpy scientific-computing

6
推荐指数
1
解决办法
6776
查看次数

生成/绘制对数正态生存函数

我在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?

r data-visualization

6
推荐指数
1
解决办法
2898
查看次数

将大量参数传递给 Python 函数的方法

我在一个项目中遇到了一个问题,在该项目中,能够将大量(数十个,而不是数百个)参数传递给 Python 中的单个“一次编写,多次使用”函数可能很有用。问题是,我不确定处理这样一大块函数的最佳方法是什么 - 只需将它们作为单个字典传入并在函数中解压该字典,或者是否有更高效的/pythonic达到同样效果的方法。

python arguments function

6
推荐指数
1
解决办法
4295
查看次数

在SAS中生成相互依赖的数据

我正在尝试在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)

sas

4
推荐指数
1
解决办法
125
查看次数