python - 如何广播列表列表的总和?
问题描述
如何以有效的方式广播列表列表的总和?下面是一个工作代码,但当 list1 具有第 n 个值(如 30 个元素)时效率不高。对此有何改进?从 numpy 导入 sum 导入 numpy 作为 np
list1 = [[4,8],[8,16]]
list2 = [2]
elemSum=[sum(list1[0]),sum(list1[1])]
print((np.array(elemSum)/np.array(list2)))
印刷:
[ 6. 12.] # expected output
我想要一个像下面这样的单行,消除变量 elemSum 的声明,但它产生不正确的输出,因为它将 2 个元素与 1 相加
print(sum(np.array(list1)/np.array(list2)))
印刷:
18.0 # not expected it sums 2 elements to 1
解决方案
numpy.sum
接受一个可选axis
参数,可用于沿单个轴的部分和:
>>> list1 = np.array([[4,8],[8,16]])
>>> list2 = np.array([2])
>>> np.sum(list1)
36
>>> np.sum(list1, axis=1)
array([12, 24])
>>> np.sum(list1, axis=1) / list2
array([ 6., 12.])
推荐阅读
- java - 在数组中使用 java Math 类时出错
- java - Spring Data JPA项目,如何限制嵌套对象的数量?@OneToMany
- java - Java If /Else 语句命令字符串
- firebase - 我可以使用 Google Cloud Armor 以编程方式将许多 IP 列入白名单吗?
- javascript - reactjs createRef 在组件数组中不起作用
- pandas - Pandas 中的快速参考长名称
- java - Jackson 不会使用自定义序列化器序列化 null
- flutter - 在 Streambuilder 中的集合上使用 where() 不断返回 null
- javascript - Discord.js messageReactionAdd 未触发
- c++ - 如何使用变量窗口顺序读取 5gb 文件