Bu yüzden, kelime listelerine sahibim ve her bir kelimenin her bir listede ne sıklıkta göründüğünü bilmem gerekiyor. ".count (word)" ifadesini kullanarak çalışır, ancak çok yavaştır (her bir listede binlerce kelime vardır ve binlerce listeleme vardır).numpy.histogramı numpy.bincount gibi davranmaya çalıştırabilir miyim?
Numlock ile işleri hızlandırmaya çalışıyorum. Her kelime için benzersiz bir sayısal kod oluşturdum, bu yüzden numpy.bincount'u kullanabildim (yalnızca tamsayılarla değil, yalnızca dizelerle çalıştığı için). Ama ben "ValueError: dizi çok büyük" alıyorum.
Şimdi ihtiyacım olan frekans sayımlarını döndürmek için numpy.histogram işlevinin "bölmeler" argümanını ayarlamaya çalışıyorum (bir şekilde numpy.histogram büyük dizilerde sorun yok gibi görünüyor). Ama şu ana kadar iyi değil. Dışarıda kimse daha önce yapmış mı? Bu mümkün mü? Göremediğim daha basit bir çözüm var mı?
original_keys, lookup_vals = numpy.unique(big_int_string_array, return_inverse=True)
Daha sonra sadece lookup_vals
üzerinde numpy.bincount
kullanabilir ve özgün dize benzersiz tamsayı geri almak gerekiyorsa, sadece kullanabilirsiniz:
Diziniz ne kadar büyüktür !? Ben sadece bincount 10000000 uzunluk dizisi ile kullandım ve gayet iyi çalıştı. Yaptığın hatayı almadan önce hafızam tükendi. –
Buradaki sorunun, ilk dizilerin büyüklüğünü değil, benzersiz sayısal kod sisteminizi içerdiğini düşünüyorum. np.bincount dizinizdeki en büyük tamsayıya eşit bir uzunluk dizisi yaratacaktır; bu, eğer bir çeşit kodlamayı gülünç büyük sayılarla kullanıyorsanız bir soruna neden olabilir. Yine de, np.bincount ([1000000000]) ile ilgili bir sorunum olmadı. Sayısal kodlama düzeniniz nedir? – cge
Ah, binmeye çalıştığınız tamsayılar büyük olduğunda hata oluşur. Bunu foo = numpy.random.randint (2 ** 62, size = 1000) ile taklit edebilirsiniz; numpy.bincount (foo) '. Tüm kutuları depolamak için devasa bir dizine eklenemeyen bir dizi oluşturmaya çalışıyorum ve numpy hayır diyor (bu hata "multiarray/ctors.c" konumunda). Kaç kelimen var? –