如何找到Numpy数组中第一次出现数字的索引?速度对我很重要.我对以下答案不感兴趣,因为他们扫描整个数组并且在第一次出现时不停止:
itemindex = numpy.where(array==item)[0][0]
nonzero(array == item)[0][0]
Run Code Online (Sandbox Code Playgroud)
注1:该问题的答案似乎没有任何问题是否有Numpy函数返回数组中某些内容的第一个索引?
注2:使用C编译方法比Python循环更受欢迎.
我是一个R用户,我无法弄清楚匹配的匹配()的熊猫.我需要使用这个函数迭代一堆文件,获取一个关键信息,然后将它合并回'url'上的当前数据结构.在R我会做这样的事情:
logActions <- read.csv("data/logactions.csv")
logActions$class <- NA
files = dir("data/textContentClassified/")
for( i in 1:length(files)){
tmp <- read.csv(files[i])
logActions$class[match(logActions$url, tmp$url)] <-
tmp$class[match(tmp$url, logActions$url)]
}
Run Code Online (Sandbox Code Playgroud)
我不认为我可以使用merge()或join(),因为每次都会覆盖logActions $ class.我也不能使用update()或combine_first(),因为它们都没有必要的索引功能.我也试过基于这个SO帖子创建一个match()函数,但是无法弄清楚如何让它与DataFrame对象一起工作.如果我遗漏了一些明显的东西,请道歉.
这里有一些python代码总结了我在pandas中执行类似match()的无效尝试:
from pandas import *
left = DataFrame({'url': ['foo.com', 'foo.com', 'bar.com'], 'action': [0, 1, 0]})
left["class"] = NaN
right1 = DataFrame({'url': ['foo.com'], 'class': [0]})
right2 = DataFrame({'url': ['bar.com'], 'class': [ 1]})
# Doesn't work:
left.join(right1, on='url')
merge(left, right, on='url')
# Also doesn't work the way I need it to:
left = left.combine_first(right1) …Run Code Online (Sandbox Code Playgroud)