说我有这样的数组
>>> a = np.arange(1,8).reshape((1,-1))
>>> a
array([[1, 2, 3, 4, 5, 6, 7]])
Run Code Online (Sandbox Code Playgroud)
并且我想为每个项目创建a一个"下4个项目的cumsum".也就是说,我的预期输出是
1, 2, 3, 4, 5, 6, 7, 8
1+2, 2+3, ...
1+2+3 2+3+4 ...
1+2+3+4 2+3+4+5 ...
Run Code Online (Sandbox Code Playgroud)
即包含的矩阵
1, 2, 3, 4, 5, 0, 0, 0
3, 5, 7, 9, 11,0, 0, 0
6, 9, 12,15,18,0, 0, 0
10,14,18,21,26,0, 0, 0
Run Code Online (Sandbox Code Playgroud)
由于最后3个项目的cumsum操作无法正确完成,我期待0那里.我知道如何做一个单一的cumsum.实际上,阵列是
a[:4].cumsum().reshape((-1,1)); a[1:5].cumsum().reshape((-1,1))...
Run Code Online (Sandbox Code Playgroud)
水平堆放.但是,我不知道如何以有效的方式做到这一点.这样做的好的矢量化numpy方式是什么?我也对scipy包装开放,只要它们numpy在效率或可读性方面占主导地位.
我想使用pylab绘制散点图,但是,我的一些数据是NaN这样的:
a = [1, 2, 3]
b = [1, 2, None]
Run Code Online (Sandbox Code Playgroud)
pylab.scatter(a,b) 不起作用.
有没有什么方法可以在不显示这些NaN价值的情况下绘制实际价值点?
我提前警告:此刻我可能完全糊涂了.我讲一个关于我实际尝试实现的简短故事,因为这可能会让事情变得清晰起来.说我有f(a,b,c,d,e),我想找到arg max (d,e) f(a,b,c,d,e).考虑一个离散网格(的简单的例子)F的f:
F = np.tile(np.arange(0,10,0.1)[newaxis,newaxis,:,newaxis,newaxis], [10, 10, 1, 10, 10])
maxE = F.max(axis=-1)
argmaxD = maxE.argmax(axis=-1)
maxD = F.max(axis=-2)
argmaxE = maxD.argmax(axis=-1)
Run Code Online (Sandbox Code Playgroud)
这就是我通常如何解决离散化版本的情况.但现在假设相反,我想解决arg max d f(a,b,c,d,e=X):与其选择最佳e每隔输入,e是一个固定的和给定的(大小AxBxCxD,在这个例子是的10x10x100x10).我有麻烦解决这个问题.
我天真的做法是
X = np.tile(np.arange(0,10)[newaxis,newaxis,:,newaxis], [10,10,1,10])
maxX = F[X]
argmaxD = maxX.argmax(axis=-1)
Run Code Online (Sandbox Code Playgroud)
然而,崩溃我的IDE的大量内存意味着F[X]显然不是我想要的.
表现是关键.
我正在使用PyCharm,并且通常在其Python控制台中运行部分脚本以进行调试.但是,当我必须在"大"变量上运行某些东西(消耗大量内存)时,控制台变得非常慢.
Say df是一个庞大的pandas数据框,只要我df.在控制台中输入,它就不会再响应10-15秒了.我不知道这是否是特定的熊猫,因为我使用的唯一"大"变量来自熊猫.
我在Mac OS X 10.9.4(8 GB内存)上运行社区版3.4.1,pandas 0.14,Python 2.7.3.
大小df:
In[94]: df.values.nbytes + df.index.nbytes + df.columns.nbytes
Out[94]: 2229198184
Run Code Online (Sandbox Code Playgroud) 我刚刚在全新的Mac OS安装中通过home-brew安装了pip和Python.
首先,我的pip根本没有安装依赖项 - 这迫使我重新运行'pip install tables'3次,每次它会告诉我一个依赖项,我会安装它然后再重新运行它.这是预期的行为吗?
其次,它不接受它刚刚安装的Cython的安装:
$ pip show cython
---
Name: Cython
Version: 0.21
Location: /usr/local/lib/python2.7/site-packages
Requires:
Run Code Online (Sandbox Code Playgroud)
但
$ pip install tables
Downloading/unpacking tables
Downloading tables-3.1.1.tar.gz (6.7MB): 6.7MB downloaded
Running setup.py (path:/private/var/folders/r_/9cc9_ldj7g35cqnfql52hqt80000gn/T/pip_build_excuvator/tables/setup.py) egg_info for package tables
* Using Python 2.7.8 (default, Aug 24 2014, 21:26:19)
* Found numpy 1.9.0 package installed.
* Found numexpr 2.4 package installed.
.. ERROR:: You need Cython 0.13 or greater to compile PyTables!
Complete output from command python setup.py egg_info:
* Using …Run Code Online (Sandbox Code Playgroud) 考虑
text <- "who let the dogs out"
fooo <- strsplit(text, " ")
fooo
[[1]]
[1] "who" "let" "the" "dogs" "out"
Run Code Online (Sandbox Code Playgroud)
输出strsplit是一个列表.然后列表的第一个元素是一个向量,其中包含上面的单词.
为什么函数表现那样?是否有任何情况会返回包含多个元素的列表?
我可以使用
fooo[[1]][1]
[1] "who"
Run Code Online (Sandbox Code Playgroud)
,但有没有更简单的方法?
我开始使用来寻找Python的瓶颈line_profiler。现在,我正在通过运行
kernprof -l -v myFile.py
Run Code Online (Sandbox Code Playgroud)
但是,时间单位似乎为1e-6,导致输出结果如132329040。如何增加时间间隔,以使输出在更大的时间增量内更具可读性?
我读到可以使用手动收集垃圾
gc.collect()
Run Code Online (Sandbox Code Playgroud)
现在我想知道什么时候这样做有用。我想它在某种程度上是通用的 Python 逻辑。假设我有一个大循环,并且在每个循环中都会使用大矩阵Z并一次又一次地重写它们。如果我不改变 的大小,最后删除矩阵并收集垃圾有用Z吗?
一般问题在什么情况下可以真正观察到强制垃圾收集的影响,尤其是在进行大量数值计算时numpy?
我有时间序列数据,如下:
emplvl
date
2003-01-01 10955.000000
2003-04-01 11090.333333
2003-07-01 11157.000000
2003-10-01 11335.666667
2004-01-01 11045.000000
2004-04-01 11175.666667
2004-07-01 11135.666667
2004-10-01 11480.333333
2005-01-01 11441.000000
2005-04-01 11531.000000
2005-07-01 11320.000000
2005-10-01 11516.666667
2006-01-01 11291.000000
2006-04-01 11223.000000
2006-07-01 11230.000000
2006-10-01 11293.000000
2007-01-01 11126.666667
2007-04-01 11383.666667
2007-07-01 11535.666667
2007-10-01 11567.333333
2008-01-01 11226.666667
2008-04-01 11342.000000
2008-07-01 11201.666667
2008-10-01 11321.000000
2009-01-01 11082.333333
2009-04-01 11099.000000
2009-07-01 10905.666667
Run Code Online (Sandbox Code Playgroud)
我想以最简单的方式在该图上添加线性趋势(带截距).此外,我想计算这一趋势,仅以2006年之前的数据为条件.
我在这里找到了一些答案,但它们都包括在内statsmodels.首先,这些答案可能不是最新的:pandas改进,现在本身包括一个OLS组件.其次,statsmodels似乎估计每个时间段的个体固定效应,而不是线性趋势.我想我可以重新计算一个运行季度变量,但是大多数人都有更舒服的方法吗?
OLS Regression Results
==============================================================================
Dep. Variable: emplvl R-squared: 1.000
Model: OLS Adj. R-squared: nan
Method: …Run Code Online (Sandbox Code Playgroud) 关于matplotlib/Python和latex的集成问了几个问题,但是我找不到以下内容:
当我savefig()在乳胶中包含创建的 pdf 文件时,我总是
includegraphics[scale=0.5]{myFile.pdf}
Run Code Online (Sandbox Code Playgroud)
并且比例通常在0.4或左右0.5。鉴于我正在创建 A5 投影仪幻灯片,生成正确大小的 pdf 文件的正确方法是什么,这样我就不需要在乳胶中指定它?
请注意,这些不是全尺寸的仅图像投影仪幻灯片,它需要稍微小一些以允许页眉、页脚和标题。