Dada una lista de números en Mathematica, ¿cómo extraería de esa lista el número total de números entre los números a
y b
que especifico?Encontrar la frecuencia del rango de números en Mathematica
Respuesta
La forma más directa es simplemente:
Count[data, x_ /; a <= x <= b]
hay maneras por mucho más rápidos para la mayoría de los datos, esta vez gracias a Carl Woll:
[email protected]@Clip[data, {a, b}, {0, 0}]
método de Carl Woll es especialmente rápido, pero como Yoda señaló, falla si su lista contiene ceros, y su rango también se extiende a cero. Aquí es otro método de Kevin J. McCann que maneja este caso, y sigue siendo muy rápido:
[email protected][(data - a)*(b - data)]
En función pura [datos, a, b]:
[email protected][(#-#2)*(#3-#)]&
Aquí es un enfoque que puede probar:
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
Un enfoque alternativo utilizando IntervalMemberQ
es
freq[a_, b_, list_] :=
[email protected]@IntervalMemberQ[Interval[{a, b}], list]
otro enfoque es
NumberOfNumbers[lst_?ListQ, lwr_?NumberQ, upr_?NumberQ] :=
[email protected][lst, (lwr <= # <= upr) &]
D
favor ver BinCount
:
In[176]:= BinCounts[Range[30], {{2, 11/2}}]
Out[176]= {4}
Comparar con conteo directo:
In[177]:= Count[Range[30], x_ /; 2 <= x < 11/2]
Out[177]= 4
Sasha, en Mathematica 7 BinCounts es muy lento. ¿Ha sido mejorado esto recientemente? –
Tiempos en una lista de 5 millones de reales: 'Count' = 3,234 Segundos; 'BinCounts' = 39.344 Segundos; 'Clip' = 0.078 Second –
@ Mr.Wizard' BinCounts' mejorado en v8, pero aún pierde 'Count' por un factor de 2 en el timing. – Sasha
- 1. Encontrar el LCM de un rango de números
- 2. Números aleatorios en un rango
- 3. ¿Hay una función incorporada de Mathematica para encontrar operadores en lugar de números en ecuaciones?
- 4. Python encontrar los números no en conjunto
- 5. Generando un rango de números en MySQL
- 6. Números que se repiten con mayor frecuencia en una enorme lista de números
- 7. Generar "en rango" números aleatorios en C
- 8. ¿Mathematica llama NMinimize con símbolos en lugar de números?
- 9. Números en Javascript y rango efectivo
- 10. Buscar intersección de rango de números
- 11. Encontrar un rango de CoffeeScript
- 12. Encontrar el rango de direcciones del segmento de datos
- 13. ¿Cómo obtener la frecuencia de muestreo y la frecuencia del archivo de música (MP3) en android?
- 14. Mathematica: genera una lista de números primos hasta un límite
- 15. Convertir un rango de números a otro rango, manteniendo la proporción
- 16. Seleccionar números entre un rango (1 a 100) en sqlite
- 17. Encontrar la suma de los números de Fibonacci
- 18. Comprobación de un rango de números con expresiones regulares
- 19. Formatos de números internos de Mathematica y precisión
- 20. ¿Qué rango de frecuencia de sonido puede medirse desde el micrófono del iPhone?
- 21. Usando el caso para un rango de números en Bash
- 22. Determinar la frecuencia de los números que aparecen en las tiradas de dados
- 23. ¿Cuántos números de coma flotante distintos en un rango específico?
- 24. Algoritmo para encontrar la diferencia máxima en una matriz de números
- 25. Verifique un rango de números en una condición if
- 26. Cómo asignar números en el rango <0;99> al rango <-1.0;1.0>?
- 27. La forma más rápida de encontrar el rango de suma máxima en int []
- 28. Conversión/cuantificación del rango de flotación al rango entero
- 29. Algoritmo rápido para encontrar números primos?
- 30. Modificar el rango de un generador de números aleatorios uniforme
Gracias por la aceptación. –