python - 点对点迭代后如何计算结果的总和,不包括重复
问题描述
从我的函数的结果中,我收到了一个对齐 n 序列的分数,忽略了 5 个序列的重复 Eg:
1 vs 2 = 11
1 vs 3 = 322
1 vs 4 = -132
1 vs 5 = -22
2 vs 3 = -5
2 vs 4 = 169
2 vs 5 = 222
3 vs 4 = -140
3 vs 5 -16
4 vs 5 = 111
并将它们存储在一个列表中:
my_list = [11, 322, -132, -22, -5, 169, 222, -140, -16, 111]
我想总结出现序列的所有结果,并从中创建一个新列表。求和示例:
S1 = 11+322-132-22 = 179
S2 = 11-5+169+222 = 397
等等
new_list = [179, 397, 161, 8, 295]
有没有什么简单的方法可以创建一个对不同数量的序列灵活的函数并做到这一点?
解决方案
假设您的序列长度是n
(= 5 这里)。利用:
def f(n, my_list)
arr = np.zeros((n, n))
mask = np.tril(np.ones((n, n))) == 0
arr[mask] = my_list
new_list = np.sum(arr + arr.T, axis = 1)
输出:
>>> new_list
array([179., 397., 161., 8., 295.])
推荐阅读
- laravel-5 - 如何每月安排两次任务
- vue.js - Weex -
- vs
- algorithm - Minimum number of elements in array which gives same OR value as that of entire array
- python - cx_Oracle.NotSupportedError: Python value cannot be converted to a database value
- javascript - Javascript in react
- android - com.android.volley.ParseError: org.json.JSONException: org.json.JSONArray 类型的值 [{}] 无法转换为 JSONObject
- google-chrome-extension - Timestamp in chrome extension notification
- html - 如何避免在可折叠面板内提交表单时重新加载页面?
- entity-framework - 不使用迁移时实体框架的优点
- angular - 在角度应用程序中获取 [Object Object]