Par*_*val 6 python numpy histogram
所以,我有单词列表,我需要知道每个单词在每个列表中出现的频率.使用".count(word)"有效,但速度太慢(每个列表有数千个单词,我有数千个列表).
我一直试图用numpy来加快速度.我为每个单词生成了一个唯一的数字代码,所以我可以使用numpy.bincount(因为它只适用于整数,而不是字符串).但我得到"ValueError:数组太大了".
所以现在我试图调整numpy.histogram函数的"bins"参数,使其返回我需要的频率计数(不知何故numpy.histogram似乎没有大数组的麻烦).但到目前为止还不好.那里的任何人碰巧都曾经这样做过吗?它甚至可能吗?是否有一些我没有看到的更简单的解决方案?
为什么不使用numpy.unique以下方法将整数减少到最小值:
original_keys, lookup_vals = numpy.unique(big_int_string_array, return_inverse=True)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用numpy.bincounton lookup_vals,如果你需要取回原始字符串唯一整数,你可以使用lookup_valsas作为索引的值original_keys.
所以,像:
import binascii
import numpy
string_list = ['a', 'b', 'c', 'a', 'b', 'd', 'c']
int_list = [binascii.crc32(string)**2 for string in string_list]
original_keys, lookup_vals = numpy.unique(int_list, return_inverse=True)
bins = bincount(lookup_vals)
Run Code Online (Sandbox Code Playgroud)
此外,它避免了对整数进行平方的需要.