python - 如何对字符串数组执行 bincount?

标签 python arrays string pandas numpy

我有一个包含字符串值的 NumPy 数组。

例如:["bus", "bar", "bar", "café".....]

计算数组中每个元素出现次数的最佳方法是什么。我目前的解决方案是:

# my_list contains my data.
bincount = []
for name in set(my_list.tolist()):
    count = sum([1 for elt in my_list if elt == name])
    bincount.append(count)  

我试过 bincount 但它不适用于这种类型的数据。

你知道更好的解决方案吗?

最佳答案

np.unique

l = ['bus', 'bar', 'bar', 'café', 'bus', 'bar', 'café']
a, b = np.unique(l, return_counts=True)

a
# array(['bar', 'bus', 'café'], dtype='<U4')

b
# array([3, 2, 2])

pd.value_counts

pd.value_counts(l)

bar     3
bus     2
café    2
dtype: int64

# <=0.23
pd.value_counts(l).values
# 0.24+
pd.value_counts(l).to_numpy()
# array([3, 2, 2])

确保已导入 pandas(import pandas as pd)。


pd.factorize

np.bincount(pd.factorize(l)[0])
# array([2, 3, 2])

这会将字符串转换为数字类别(或因子,如果您愿意),并对它们进行计数。


pd.get_dummies

pd.get_dummies(l).sum()

bar     3
bus     2
café    2
dtype: int64

有点迂回,但仍然很有趣。

关于python - 如何对字符串数组执行 bincount?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503331/

相关文章:

Python BS4 不支持的格式 : White space in attribute selector

Python Tkinter Canvas 无法绑定(bind)键盘

python - 如何将相同的函数应用于字典数组中的每个值?

javascript - 在 ES6 中创建多维数组

php - 从 PHP 发布的表单中清理和构建查询的更快方法

javascript - 如何解析前导0的字符串

python - 根据单独数组中的标签对 numpy 数组值求和

python - 在同一个 CSV 文件中保存不同大小的多个列/变量

Python Json解码数组到字符串

regex - 何时使用正则表达式与内置字符串方法?