вывод переменных со счетом > средний балл выбираются в python

#python #arrays

#python #массивы

Вопрос:

Если бы у меня было два массива, каждая переменная была связана с заданной оценкой:

  1. первый массив состоит из следующего (переменные, оценка):
  • F12 ——> 0.769327
  • F8 ——> 0.932702
  • F6 ——> 0,980982
  • F9 ——> 0.998438
  • F7 ——> 0.999610
  • F2 ——> 1.000000
  • F3 ——> 1.000000
  • F1 ——> 1.000000
  • F11 ——> 1.000000
  • F4 ——> 1.000000
  • F10 ——> 1.000000
  • F5 ——> 1.000000
  1. второй массив следующий (переменные, оценка):
  • F2 ——> 0.179329
  • F3 ——> 0.148576
  • F1 ——> 0.179842
  • F11 ——> 0.217283
  • F4 ——> 0.184893
  • F6 ——> 0.150987
  • F10 ——> 0.267837
  • F9 ——> 0.121113
  • F5 ——> 0.126617
  • F7 ——> 0.112994
  • F12 ——> 0.900000
  • F8 ——> 0.100000
  1. и я хочу объединить эти два массива в один массив, а затем найти вычисление среднего балла, связанное с
  • F2, F3, F1, F11, F4, F6, F10, F9, F5, F7, F12, F8
  1. наконец, выбираются выходные переменные с оценкой > средняя оценка. весь код на python.

Комментарии:

1. Пожалуйста, опубликуйте то, что вы пробовали до сих пор, и конкретные проблемы, с которыми столкнулись; обратите внимание, что SO не является сервисом для написания кода. Кроме того, вопрос не имеет ничего общего с machine-learning или database — пожалуйста, не спамите нерелевантными тегами (удалены).

Ответ №1:

Вы не можете использовать arrays с тем типом объектов, который у вас есть. Массивы являются однородными объектами, при условии, что вы используете NumPy.

Для вашей цели вы должны использовать lists , они могут быть разнородными:

 lst1 = [['F12', 0.769327], ['F8', 0.932702], ['F6', 0.980982],
        ['F9', 0.998438], ['F7', 0.999610], ['F2', 1.000000],
        ['F3', 1.000000], ['F1', 1.000000], ['F11', 1.000000],
        ['F4', 1.000000], ['F10', 1.000000], ['F5', 1.000000]]

lst2 = [['F2', 0.179329], ['F3', 0.148576], ['F1', 0.179842],
        ['F11', 0.217283], ['F4', 0.184893], ['F6', 0.150987],
        ['F10', 0.267837], ['F9', 0.121113], ['F5', 0.126617],
        ['F7', 0.112994], ['F12', 0.900000], ['F8', 0.100000]]
  

Для объединения двух списков вы можете использовать оператор :

 lst3 = lst1   lst2
  

Затем вы можете выполнить итерацию по списку, чтобы вычислить среднее значение и выбрать переменные, которые соответствуют вашему условию:

 lst3_mean = 0

for i in lst3:
    lst3_mean  = i[1]
lst3_mean = lst3_mean / len(lst3)

result = []
for i in lst3:
    if i[1] > lst3_mean and i[0] not in result:
        result.append(i[0])
print(result)
  

Комментарии:

1. большое спасибо Питеру, на самом деле я очень похож на ваше решение, за исключением того, что я хочу сравнить значения list1 с 1, если значение в list1 >= вывод переменных, связанных с этим значением, поэтому я сделал следующее: выбранная _variable = np.all(np.asarray(list1) >= 1 печать (выбранная _variable), но это не сработало.

2. извини, Питер. но я дал неверное вычисленное среднее значение. т.Е. значение lst_mean должно = 0,5737738699887709, но оно дало 0,005737738699887709, где отсутствует решение, плз

Ответ №2:

вы можете вычислить среднее значение следующим образом:

 mean = np.sum(np.concatenate((arr1[:,1], arr2[:,1])))/12
  

а затем фильтруйте те, которые больше среднего значения, вот так:

 res = arr1[arr1 > mean]