Mam więc listę słów i muszę wiedzieć, jak często każde słowo pojawia się na każdej liście. Używanie ".count (word)" działa, ale jest zbyt wolne (każda lista zawiera tysiące słów i mam tysiące list).Czy mogę oszukać numpy.histogram tak, aby zachowywał się jak numpy.bincount?
Próbowałem przyspieszyć działanie dzięki numpy. Wygenerowałem unikalny kod numeryczny dla każdego słowa, więc mógłbym użyć numpy.bincount (ponieważ działa tylko z liczbami całkowitymi, a nie łańcuchami). Ale otrzymuję "ValueError: array is too big".
Teraz próbuję zmodyfikować argument "bin" funkcji numpy.histogram, aby zwrócił mi potrzebne liczby częstotliwości (w jakiś sposób numpy.histogram wydaje się nie mieć problemów z dużymi tablicami). Ale jak dotąd nic dobrego. Czy zdarzyło się, że ktoś wcześniej to zrobił? Czy to możliwe? Czy istnieje jakieś prostsze rozwiązanie, którego nie widzę?
Jak duża jest twoja tablica !? Właśnie użyłem bincounta z tablicą długości 10000000 długości i działało dobrze. Zabrakło mi pamięci, zanim dostanę błąd. –
Myślę, że tutaj problem dotyczy unikalnego systemu kodów numerycznych, a nie rozmiaru początkowych tablic. np.bincount utworzy tablicę o długości równej 1 + największej liczbie całkowitej w twojej tablicy, która, jeśli używasz jakiegoś rodzaju kodowania z absurdalnie dużymi liczbami, może spowodować problem. Nadal nie miałem problemu z np.bincount ([1000000000]). Jaki jest twój numeryczny schemat kodowania? – cge
Ah wydaje się, że błąd pojawia się, gdy jesteś liczb całkowitych, które próbujesz bin są ogromne. Możesz emulować go za pomocą 'foo = numpy.random.randint (2 ** 62, size = 1000); numpy.bincount (foo) '. Domyślam się, że próbuje stworzyć ogromną, nieindeksowalną tablicę do przechowywania wszystkich binów, a numpy mówi "nie" (ten błąd występuje w 'multiarray/ctors.c'). Ile masz słów? –