私は単語のリストを持っており、各単語が各リストにどのくらいの頻度で現れるかを知る必要があります。 ".count(word)"を使うと動作しますが、速度が遅すぎます(各リストには何千もの単語があり、何千ものリストがあります)。numpy.histogramをnumpy.bincountのように振ることができますか?
私はnumpyで物事をスピードアップしようとしてきました。私は各単語に一意の数値コードを生成したので、numpy.bincountを使用することができました(文字列ではなく整数のみで動作するため)。しかし、私は "ValueError:配列が大きすぎます"というメッセージが表示されます。
これで、numpy.histogram関数の "bins"引数を調整して、必要な頻度のカウントを返すようにしようとしています(何とかnumpy.histogramが大きな配列に問題がないようです)。しかし、今のところいいえ。誰もが前にこれをしたことが起こった?それも可能ですか?私が見逃している簡単な解決策がありますか?
あなたの配列はどれくらいですか?私はint型の10000000の長さの配列でbincountを使用しましたが、うまくいきました。私はあなたがエラーを取得する前に私はメモリが不足しています。 –
私は、ここでの問題は、最初の配列のサイズではなく、独自の数値コードシステムが関係していると思います。 np.bincountは1 +あなたの配列中の最大の整数に等しい長さの配列を作成します。あなたが大量のコードを何らかの形で使っているなら、問題を引き起こす可能性があります。それでも、np.bincount([1000000000])に問題はありませんでした。あなたの数値コード体系は何ですか? – cge
ああ、それはあなたがビンにしようとしている整数が巨大であるときにエラーが発生するようです。 'foo = numpy.random.randint(2 ** 62、size = 1000);でエミュレートすることができます。 numpy.bincount(foo) 'です。私はそれがすべてのビンを格納するために巨大なインデックス不可能な配列を作成しようとしていると思います。numpyはnoと言っています(エラーは 'multiarray/ctors.c'にあります)。何語持っていますか? –