【问题标题】:How to find values repeated more than n number of times using only numpy?如何仅使用numpy查找重复次数超过n次的值?
【发布时间】:2020-04-23 01:54:39
【问题描述】:

我是 numpy 和 python 的新手,所以请温柔。

所以我正在处理一个 csv 文件 Popularnames.csv,它有不同的列,我只想加载标题为“印度流行名称”的第 3 列,并在该列中找到重复超过10次​​。我也只想使用 numpy 来达到这个目的,还没有找到任何解决方案。

我的代码是:

Baby_names=np.genfromtxt('popularnames.csv', delimiter=',', usecols=(3), skip_header=1, dtype=str)
for Baby_names:
    if np.unique(Baby_names)>10:
        print(Baby_names)

我确实知道这段代码是错误的,但在我所知有限的情况下,这就是我所能想到的。任何帮助将不胜感激。

提前致谢!

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。你能描述一下你的代码是做什么的吗(例如,它会给你一个错误,或者打印出你不期望的东西)吗?这将帮助其他人找到答案。

标签: python numpy data-science


【解决方案1】:

我为您创建了一个虚拟示例:

from io import StringIO
test = "Baby_names,age,country\nsarah,4,USA\njames,1,UK\nsarah,2,'UK'\n'sarah,3,France\n'john,2,UK\njames,6,Australia"
a = np.genfromtxt(StringIO(test), delimiter=',',usecols=(0), skip_header=1, dtype=str)
print(a)

['sarah' 'james' 'sarah' "'sarah" "'john" 'james']

unique, counts = np.unique(a, return_counts=True)
x = dict(zip(unique, counts))

x:

{"'john": 1, "'sarah": 1, 'james': 2, 'sarah': 2}

print([key for key, value in x.items() if value >= 2])

['james', 'sarah']

缩短代码:

for (name, count) in zip(*np.unique(a, return_counts=True)):
    if count >1:
        print(name)

【讨论】:

  • 嗨,非常感谢您的回答!再问一个问题,如果我要找到使用次数最多的名字,语法会相似吗?
  • 如果最高且只有一个名称,那么您可以使用Counter.most_commonstackoverflow.com/a/6252400/6660373。其他的可以自己找。因为我们有 x dict 包含计数的元素,我们可以找出最大值的元素
  • stackoverflow.com/questions/60828477/… 如果有很多,您也可以获得第一个最大值。
【解决方案2】:

for 循环的语法错误。

试试下面的代码:

baby_names = np.genfromtxt('popularnames.csv', delimiter=',', usecols=(3), skip_header=1, dtype=str)

for name, count in zip(*np.unique(baby_names, return_count=True)):
    if count > 10:
        print(name)

return_count=True 告诉 numpy 返回每个唯一名称的计数。 zip 将名称绑定到计数,这样我们就可以遍历这两者。

如果你是 Python 新手,我建议你在使用 numpy 之前继续学习它。

【讨论】:

    猜你喜欢
    • 2016-12-21
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2022-01-21
    相关资源
    最近更新 更多