my previous questionの続きとして、PackedArrayのリスト製品を見つけるSimonの方法は高速ですが、負の値では機能しません。PackedArrayの高速リスト製品サイン?
これは、Abs
で最小限の時間ペナルティで「修正」することができますが、記号が失われているため、製品記号を別途見つける必要があります。
私が試した最速の方法はEvenQ @ Total @ UnitStep[-lst]
lst = RandomReal[{-2, 2}, 5000000];
Do[
[email protected]@UnitStep[-lst],
{30}
] // Timing
Out[]= {3.062, Null}
では、より高速な方法はありますか?
もう一度やり直してください、Simon。私は「カウント」を試みたが、それは遅かった。私はこの質問を投稿する前に 'Tally'を試してみることに慣れていませんでした。このサイトとその有用な人々は私を怠け者にする可能性があります。 –
@ Mr.Wizard:このサイトでは私も怠惰になっています!時々、私は他の人のMMA問題を私が投稿する前に取るよりも多くの時間を費やしています。 (幸いにも、この場合、「Tally」が私が試した2番目のものでした)。 – Simon
@ Mr.Wizard:StackExchangeサイトの基本モデルが人間の心理学によくマッチすることを示していると思います。 – Simon