Как узнать, сколько элементов находится в заданном диапазоне значений при помощи NumPy?

Как посчитать количество элементов в матрице, которые попадают в следующие диапазоны: от 0 до 0,3, от 0,3 до 0,4 и от 0,4 до 1? В матрице имеется около 200 строк и столбцов с значениями, которые варьируются от 0 до 1, а также значения -10, обозначающие отсутствие данных (обычно распределенные по краям матрицы). Пример матрицы представлен ниже: <br/> <br/> array([[-10., -10., -10., ..., -10., -10., -10.], <br/> [-10., -10., -10., ..., -10., -10., -10.], <br/> [-10., -10., -10., ..., -10., -10., -10.], <br/> ..., <br/> [-10., -10., -10., ..., -10., -10., -10.], <br/> [-10., -10., -10., ..., -10., -10., -10.], <br/> [-10., -10., -10., ..., -10., -10., -10.]], dtype=float32)
  • 14 октября 2024 г. 15:03
Ответы на вопрос 2
Для подсчета количества элементов в заданных диапазонах значений с использованием NumPy, вы можете воспользоваться функцией `np.count_nonzero` в сочетании с логическими условиями. При этом важно учитывать, что вам нужно исключить значения `-10`, которые обозначают отсутствие данных.

Вот пример кода, который выполняет эту задачу:

```python
import numpy as np

# Пример матрицы
data = np.array([[-10., -10., -10., -10.],
                 [-10., 0.1, 0.35, 0.5],
                 [-10., 0.3, -10., -10.],
                 [0.2, 0.4, 0.6, -10.],
                 [-10., -10., 0.1, 0.1]],
                dtype=float)

# Убираем значения -10
filtered_data = data[data != -10]

# Подсчет количества элементов в диапазонах
count_0_03 = np.count_nonzero((filtered_data >= 0) & (filtered_data < 0.3))
count_0_3_04 = np.count_nonzero((filtered_data >= 0.3) & (filtered_data < 0.4))
count_0_4_1 = np.count_nonzero((filtered_data >= 0.4) & (filtered_data <= 1))

print(f"Количество элементов от 0 до 0.3: {count_0_03}")
print(f"Количество элементов от 0.3 до 0.4: {count_0_3_04}")
print(f"Количество элементов от 0.4 до 1: {count_0_4_1}")
```

В этом коде:

1. Мы создаем матрицу `data` с примерами значений, включая `-10`.
2. Фильтруем матрицу, чтобы убрать значения `-10`, создавая новую матрицу `filtered_data`.
3. Используем `np.count_nonzero` в сочетании с логическими условиями для каждого диапазона значений.
4. Выводим результаты подсчета.

Запустив этот код, вы получите количество элементов в каждом из указанных диапазонов.
np.histogram(a, bins=[-10, 0,0.3,.4,1])
Похожие вопросы