相关疑难解决方法(0)

Numpy:快速找到第一个价值指数

如何找到Numpy数组中第一次出现数字的索引?速度对我很重要.我对以下答案不感兴趣,因为他们扫描整个数组并且在第一次出现时不停止:

itemindex = numpy.where(array==item)[0][0]
nonzero(array == item)[0][0]
Run Code Online (Sandbox Code Playgroud)

注1:该问题的答案似乎没有任何问题是否有Numpy函数返回数组中某些内容的第一个索引?

注2:使用C编译方法比Python循环更受欢迎.

python numpy find

96
推荐指数
9
解决办法
8万
查看次数

对于python Pandas/numpy,R的match()相当于什么?

我是一个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)

python merge r match pandas

6
推荐指数
2
解决办法
2530
查看次数

标签 统计

python ×2

find ×1

match ×1

merge ×1

numpy ×1

pandas ×1

r ×1