我正在尝试使用python来确定一个(小)图像是否在另一个(大)图像中.
在我完全走错路之前的任何建议?
/编辑:好的,一些想法:我正在使用PIL,我正在将每个图像转换为'P'模式,因此我可以将每个像素作为整数进行比较.我正在尝试实现类似Boyer-Moore字符串搜索或Knuth-Morris-Pratt算法的东西,但是在2维中.
也许这会有所帮助:而不是搜索ABC in XXXABCXXX(answer = 4)我们正在寻找
ABC
DEF
GHI
Run Code Online (Sandbox Code Playgroud)
在
XXXXX
XABCX
XDEFX
XGHIX
XXXXX
Run Code Online (Sandbox Code Playgroud)
(回答=(2,2))
我正在尝试编写一个函数来将3个字母的月份缩写转换为R中的数值.
这就是我所拥有的,我想知道是否有更好的方法来做到这一点:
numMonth <- function(x) {
months <- list(jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12)
x <- tolower(x)
sapply(x,function(x) months[[x]])
}
numMonth(c('JAN','DEC'))
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个R函数来计算两个日期之间的工作日数.例如,Nweekdays('01/30/2011','02/04/2011')等于5.
与此问题类似.谢谢!
/编辑:@J.温彻斯特的答案很棒,但我想知道是否有人能想出一种方法来对此进行矢量化,以便它可以在两列日期上工作.谢谢!/编辑2:再次感谢!
data.table很棒,因为我可以做滚动连接,甚至可以在组内滚动连接!
library(data.table)
set.seed(42)
metrics <- data.frame(
ID=c(rep(1, 10), rep(2,5), rep(3,5)),
Time=c(1:10, 4:8, 8:12),
val1=runif(20),
val2=runif(20),
val3=runif(20),
val4=runif(20)
)
metrics <- data.table(metrics[sample(1:nrow(metrics), 15),], key=c('ID', 'Time'))
calendar <- data.table(expand.grid(ID=1:3, Time=1:12), key=c('ID', 'Time'))
metrics[calendar,roll=TRUE]
Run Code Online (Sandbox Code Playgroud)
但是,这对我来说不够好.这data.table还有NAs:
> metrics[calendar,roll=TRUE]
ID Time val1 val2 val3 val4
1: 1 1 0.9148060 0.9040314 0.3795592 0.675607275
2: 1 2 0.9370754 0.1387102 0.4357716 0.982817198
3: 1 3 0.9370754 0.1387102 0.4357716 0.982817198
4: 1 4 0.8304476 0.9466682 0.9735399 0.566488424
5: 1 5 0.8304476 0.9466682 0.9735399 0.566488424 …Run Code Online (Sandbox Code Playgroud) 我一直在玩redis数据库的R接口,以及foreach的doRedis并行后端.我有几个问题,帮助我更好地应用此工具:
我知道这是很多问题,但我一直遇到这样一种情况,即我对并行处理如何工作的有限理解阻碍了我实现它的能力.例如,我最近尝试在大型数据库上并行化计算,并发现自己将整个数据库传递到我的集群上的每个节点,这一操作完全破坏了我从并行化中获得的任何优势.
谢谢!
我编写了一个采用二维数组的宏,并将其"打印"到excel工作簿中的等效单元格.
有没有更优雅的方式来做到这一点?
Sub PrintArray(Data, SheetName, StartRow, StartCol)
Dim Row As Integer
Dim Col As Integer
Row = StartRow
For i = LBound(Data, 1) To UBound(Data, 1)
Col = StartCol
For j = LBound(Data, 2) To UBound(Data, 2)
Sheets(SheetName).Cells(Row, Col).Value = Data(i, j)
Col = Col + 1
Next j
Row = Row + 1
Next i
End Sub
Sub Test()
Dim MyArray(1 To 3, 1 To 3)
MyArray(1, 1) = 24
MyArray(1, 2) = 21
MyArray(1, 3) = 253674
MyArray(2, …Run Code Online (Sandbox Code Playgroud) 在R中,我指定一个没有拦截的模型如下:
data(iris)
lmFit <- lm(Sepal.Length ~ 0 + Petal.Length + Petal.Width, data=iris)
> round(coef(lmFit),2)
Petal.Length Petal.Width
2.86 -4.48
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用插入符号匹配相同的模型,则生成的模型包含截取:
library(caret)
caret_lmFit <- train(Sepal.Length~0+Petal.Length+Petal.Width, data=iris, "lm")
> round(coef(caret_lmFit$finalModel),2)
(Intercept) Petal.Length Petal.Width
4.19 0.54 -0.32
Run Code Online (Sandbox Code Playgroud)
如何caret::train排除拦截术语?
编辑:新包text2vec非常好,并且很好地解决了这个问题(和许多其他问题).
关于github 插图的CRAN text2vec上的text2vec,用于说明ngram标记化
我在R中有一个非常大的文本数据集,我已将其作为字符向量导入:
#Takes about 15 seconds
system.time({
set.seed(1)
samplefun <- function(n, x, collapse){
paste(sample(x, n, replace=TRUE), collapse=collapse)
}
words <- sapply(rpois(10000, 3) + 1, samplefun, letters, '')
sents1 <- sapply(rpois(1000000, 5) + 1, samplefun, words, ' ')
})
Run Code Online (Sandbox Code Playgroud)
我可以将此字符数据转换为词袋表示,如下所示:
library(stringi)
library(Matrix)
tokens <- stri_split_fixed(sents1, ' ')
token_vector <- unlist(tokens)
bagofwords <- unique(token_vector)
n.ids <- sapply(tokens, length)
i <- rep(seq_along(n.ids), n.ids)
j <- match(token_vector, bagofwords)
M <- sparseMatrix(i=i, j=j, x=1L)
colnames(M) <- bagofwords
Run Code Online (Sandbox Code Playgroud)
所以R可以在大约3秒钟内将1,000,000,000个短句矢量化为一个单词表示形式(不错!):
> M[1:3, …Run Code Online (Sandbox Code Playgroud)