У меня небольшая проблема, связанная с задачей группового распределения частот, я прочитал данные из CSV-файла и рассчитал все необходимые параметры (min, max, range, clas_with, low_class, upper_class)
import pandas as pd
import numpy as np
import math
selected_data =np.array(pd.read_csv("data.csv"))
# გამოვიანგარიშოთ ყველა საჭირო პარამეტრი
#მინიმალური და მაქსიმალური ელემენტი
min_element =np.min(selected_data)
max_element =np.max(selected_data)
# განვსაზღვროთ კლასების რაოდენობა
num_class =7 # ნებისმიერი რიცხვი 5 სა და 20 ს შორის
# განვსაზღვროთ გაბნევის დიაპაზონი
range_interval =max_element - min_element
if range_interval % num_class ==0: # თუ არაა ნაშითი, გავზარდით კლასების რაოდენობა ერთით
num_class =num_class+1
# განვსაზღვროთ კლასის სიგანე
width =math.ceil(range_interval /num_class)
# შევქმნათ ქვედა და ზედა კლასები
low_class =np.arange(min_element,max_element,width)
upper_clas = low_class + width -1
dont обратите внимание на комментарии, это на грузинском языке, моя задача - рассчитать частоты на основе выбранных данных, идея следующая: для пары границ low_class и upper_class я хочу знать, сколько элементов из исходной матрицы подходит, значения Низкий класс и верхний класс:
Значения Low_class:
[100 105 110 115 120 125 130]
Значения Upper_class
[104 109 114 119 124 129 134]
что я хочу, чтобы вычислить, сколько чисел помещается между
100-104, 105-109. , , конечно, те пары, которые я могу создать, используя команду zip, например print (list (zip (low_class, upper_class)))
вернет
[(100, 104), (105, 109), (110, 114), (115, 119), (120, 124), (125, 129), (130, 134)]
, но как рассчитать частоту? У меня есть пробовал следующий код
# class pairs
class_pairs =list(zip(low_class,upper_clas))
list_result =[]
for (low_bound, upper_bound) in class_pairs:
result =np.sum([selected_data>=low_bound and selected_data<=upper_bound])
list_result.append(result)
, но выдает следующую ошибку:
Traceback (most recent call last):
File "C:/Users/Dato/PycharmProjects/my_first_python/read_data.py", line 25, in <module>
result =np.sum([selected_data>=low_bound and selected_data<=upper_bound])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()