#python #arrays
#python #массивы
Вопрос:
Если бы у меня было два массива, каждая переменная была связана с заданной оценкой:
- первый массив состоит из следующего (переменные, оценка):
- 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
- второй массив следующий (переменные, оценка):
- 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
- и я хочу объединить эти два массива в один массив, а затем найти вычисление среднего балла, связанное с
- F2, F3, F1, F11, F4, F6, F10, F9, F5, F7, F12, F8
- наконец, выбираются выходные переменные с оценкой > средняя оценка. весь код на 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]