给定Mathematica中的数字列表,我将如何从该列表中提取我指定的数字a
和b
之间的数字总数?查找Mathematica中的数字范围
回答
最直接的办法很简单:
Count[data, x_ /; a <= x <= b]
中多数数据但是快得多的方式,这一个感谢卡尔·沃尔:
[email protected]@Clip[data, {a, b}, {0, 0}]
卡尔·沃尔的方法特别快,但作为yoda指出,如果你的列表包含零,那么它失败,你的范围也跨过零。下面是从凯文J. McCann的处理这一情况下的另一种方法,并且仍然是非常快:
[email protected][(data - a)*(b - data)]
作为一个纯粹的函数[数据,A,B]:
[email protected][(#-#2)*(#3-#)]&
这是一种方法,你可以尝试:
freq[a_, b_, list_] := [email protected]@Cases[list, x_ :> a <= x <= b]
lst = RandomInteger[10, 20]
Out = {6, 1, 1, 6, 3, 1, 10, 0, 2, 10, 3, 5, 9, 1, 5, 5, 3, 8, 2, 3}
freq[3, 6, lst]
Out = 9
使用IntervalMemberQ
另一种方法是
freq[a_, b_, list_] :=
[email protected]@IntervalMemberQ[Interval[{a, b}], list]
另一种方法是
NumberOfNumbers[lst_?ListQ, lwr_?NumberQ, upr_?NumberQ] :=
[email protected][lst, (lwr <= # <= upr) &]
d
请看BinCount
:
In[176]:= BinCounts[Range[30], {{2, 11/2}}]
Out[176]= {4}
直接计数比较:
In[177]:= Count[Range[30], x_ /; 2 <= x < 11/2]
Out[177]= 4
Sasha,在Mathematica 7 BinCounts中很慢。这最近有所改善吗? – 2011-05-17 06:48:27
500万实物列表上的计时:“计数”= 3.234秒; 'BinCounts' = 39.344秒; 'Clip' = 0.078 Second – 2011-05-17 06:52:46
@ Mr.Wizard'BinCounts'在v8中有所改进,但在时序上依然失去“计数”2倍。 – Sasha 2011-05-17 07:07:10
- 1. 在java中查找数字范围
- 2. 查找范围内的数字位置
- 3. 查找ASCII字符范围
- 4. 使用Python re.search查找数字范围
- 5. 如何查找数字范围
- 6. SQL - 查找数字范围中的数字
- 7. 查找范围
- 8. 使用Mathematica中的数字范围排列矩阵9
- 9. 查找和天数范围
- 10. 查找数组中的连续范围
- 11. 在范围字典中查找值 - python
- 12. SQL查找范围
- 13. 在数组中查找范围
- 14. 如何查找范围来自另一个表的dyamically的数字的范围?
- 15. 数字范围查询
- 16. 查找基于范围内的数字的字符串
- 17. 在SQL中查找范围的罗马数字
- 18. 查找范围内的范围值之和数量
- 19. 查找指定的范围
- 20. 变量的查找范围
- 21. 查找范围内的值
- 22. 如何查找访问中的一组数字中的数字范围
- 23. 查找大多数行的范围MYSQL
- 24. MATLAB:查找范围内的函数
- 25. 查找数大于x的范围
- 26. 查找数组的一个数字的范围
- 27. 查找范围内的数字的因数
- 28. 查找功能分数Mathematica
- 29. 在更改数字范围中查找缺失值
- 30. VBA查找 - 查找范围错误
感谢您的接受。 – 2011-05-17 07:36:59