NumPy优于常规Python列表有什么优势?
我有大约100个金融市场系列,我打算创建一个100x100x100 = 100万个单元的立方体阵列.我将使用每个y和z对每个x进行回归(3变量),以使用标准错误填充数组.
我听说过,对于"大型矩阵",出于性能和可伸缩性的原因,我应该使用NumPy而不是Python列表.事实是,我知道Python列表,它们似乎对我有用.
如果我搬到NumPy,会有什么好处?
如果我有1000个系列(即立方体中有10亿个浮点单元)怎么办?
我想创建一个日期列表,从今天开始,然后返回任意天数,例如,在我的例子中100天.有没有比这更好的方法呢?
import datetime
a = datetime.datetime.today()
numdays = 100
dateList = []
for x in range (0, numdays):
dateList.append(a - datetime.timedelta(days = x))
print dateList
Run Code Online (Sandbox Code Playgroud) 我有下表:
tickername | tickerbbname | tickertype
------------+---------------+------------
USDZAR | USDZAR Curncy | C
EURCZK | EURCZK Curncy | C
EURPLN | EURPLN Curncy | C
USDBRL | USDBRL Curncy | C
USDTRY | USDTRY Curncy | C
EURHUF | EURHUF Curncy | C
USDRUB | USDRUB Curncy | C
Run Code Online (Sandbox Code Playgroud)
对于任何给定tickername/ tickerbbname对,我不希望任何列都有多个列.我已经创建了表并且其中包含大量数据(我已经确保它符合唯一标准).然而,随着它变得越来越大,错误的空间越来越大.
有没有办法UNIQUE在这一点上添加约束?
如果为了论证,我想要Python中10长度向量的最后五个元素,我可以在范围索引中使用" - "运算符,这样:
>>> x = range(10)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[-5:]
[5, 6, 7, 8, 9]
>>>
Run Code Online (Sandbox Code Playgroud)
R中最好的方法是什么?有没有比我现在的技术更简洁的方法,即使用length()函数?
> x <- 0:9
> x
[1] 0 1 2 3 4 5 6 7 8 9
> x[(length(x) - 4):length(x)]
[1] 5 6 7 8 9
>
Run Code Online (Sandbox Code Playgroud)
这个问题与btw的时间序列分析有关,通常只对最近的数据有用.
当我取消列出日期列表时,它会将它们变回数字.这是正常的吗?除了重新申请as.Date之外的任何解决方法?
> dd <- as.Date(c("2013-01-01", "2013-02-01", "2013-03-01"))
> class(dd)
[1] "Date"
> unlist(dd)
[1] "2013-01-01" "2013-02-01" "2013-03-01"
> list(dd)
[[1]]
[1] "2013-01-01" "2013-02-01" "2013-03-01"
> unlist(list(dd))
[1] 15706 15737 15765
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?
我需要从当前日期减去工作日.
我目前有一些代码需要始终在最近的工作日运行.所以今天可能是今天,如果我们是星期一到星期五,但如果是星期六或星期日,那么我需要把它设置回周末前的星期五.我目前有一些非常笨重的代码来做到这一点:
lastBusDay = datetime.datetime.today()
if datetime.date.weekday(lastBusDay) == 5: #if it's Saturday
lastBusDay = lastBusDay - datetime.timedelta(days = 1) #then make it Friday
elif datetime.date.weekday(lastBusDay) == 6: #if it's Sunday
lastBusDay = lastBusDay - datetime.timedelta(days = 2); #then make it Friday
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
我可以告诉timedelta在工作日而不是日历日工作吗?
在一个pylab程序(也可能是一个matlab程序)中,我有一个数字表示距离的numpy数组:d[t]是时间距离t(我的数据的时间跨度是len(d)时间单位).
我感兴趣的事件是当距离低于某个阈值时,我想计算这些事件的持续时间.很容易得到一组布尔值b = d<threshold,问题归结为计算真实单词长度的顺序b.但我不知道如何有效地做到这一点(即使用numpy原语),并且我使用数组并进行手动更改检测(即当值从False变为True时初始化计数器,只要值为True就增加计数器,当值返回False时,将计数器输出到序列.但这非常缓慢.
如何在numpy数组中有效地检测那种序列?
下面是一些python代码,说明我的问题:第四个点需要很长时间才能出现(如果没有,增加数组的大小)
from pylab import *
threshold = 7
print '.'
d = 10*rand(10000000)
print '.'
b = d<threshold
print '.'
durations=[]
for i in xrange(len(b)):
if b[i] and (i==0 or not b[i-1]):
counter=1
if i>0 and b[i-1] and b[i]:
counter+=1
if (b[i-1] and not b[i]) or i==len(b)-1:
durations.append(counter)
print '.'
Run Code Online (Sandbox Code Playgroud) 我有一个问题,一个向量在开始时有一堆NA,然后是数据.然而,我的数据的特点是前N个非NA的值可能不可靠,所以我想删除它们并用NA替换它们.
例如,如果我有一个长度为20的向量,并且非NAs从索引位置4开始:
> z
[1] NA NA NA -1.64801942 -0.57209233 0.65137286 0.13324344 -2.28339326
[9] 1.29968050 0.10420776 0.54140323 0.64418164 -1.00949072 -1.16504423 1.33588892 1.63253646
[17] 2.41181291 0.38499825 -0.04869589 0.04798073
Run Code Online (Sandbox Code Playgroud)
我想删除前三个非NA值,我相信这是不可靠的,给出这个:
> z
[1] NA NA NA NA NA NA 0.13324344 -2.28339326
[9] 1.29968050 0.10420776 0.54140323 0.64418164 -1.00949072 -1.16504423 1.33588892 1.63253646
[17] 2.41181291 0.38499825 -0.04869589 0.04798073
Run Code Online (Sandbox Code Playgroud)
当然,我需要一个通用的解决方案,我永远不知道第一个非NA值何时开始.我该怎么做呢?IE如何找出第一个非NA值的索引位置?
为了完整起见,我的数据实际上被安排在一个数据帧中,其中列中有许多这些矢量,并且每个矢量可以具有不同的非NA起始位置.此外,一旦数据开始,可能会有零星的NA进一步下降,这使我无法简单地计算它们的数量,作为解决方案.
可能重复:
删除R中数据文件的空行
如何从矩阵或数据框中删除行,其中行中的所有元素都是NA?
所以要从中得到:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] NA NA NA
[3,] 3 8 13
[4,] 4 NA NA
[5,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
对此:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
[3,] 4 NA NA
[4,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
因为na.omit的问题是它删除了任何 NAs的行,所以会给我这个:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
Run Code Online (Sandbox Code Playgroud)
到目前为止我能做的最好的是使用apply()函数:
> x[apply(x, 1, function(y) !all(is.na(y))),]
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13 …Run Code Online (Sandbox Code Playgroud) 有没有办法从Windows版本的R中绘制抗锯齿图形?正如你从下面的两个版本中可以看到,Mac版的R打印图形抗锯齿....

....虽然Windows版本反锯齿文本,但它不会对实际图形进行反锯齿,如从提升点和网格中可以看到的:

这是代码的代码:
library(scatterplot3d)
attach(mtcars)
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp)
s3d$plane3d(fit)
Run Code Online (Sandbox Code Playgroud)
我需要最高质量的网页发布.我正在运行Windows 7并从RBloomberg中提取数据,这只能在Windows下运行.
r ×5
python ×4
datetime ×2
indexing ×2
numpy ×2
antialiasing ×1
arrays ×1
database ×1
date ×1
list ×1
matlab ×1
matplotlib ×1
postgresql ×1
sql ×1