如何广播列表列表的总和?
How to broadcast sum of list of list?
如何高效地广播list of list的总和?
下面是一个工作代码,但当 list1 具有第 n 个值(如 30 个元素)时效率不高。
这方面有什么改进吗?
从 numpy 导入总和
将 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.])
一直使用numpy
,如果你想要数组,不要乱用列表:
list1 = [[4,8],[8,16]]
list2 = [2]
import numpy as np
arr1 = np.array(list1)
arr2 = np.array(list2)
然后简单地:
result = arr1.sum(axis=1) / arr2
如何高效地广播list of list的总和? 下面是一个工作代码,但当 list1 具有第 n 个值(如 30 个元素)时效率不高。 这方面有什么改进吗? 从 numpy 导入总和 将 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.])
一直使用numpy
,如果你想要数组,不要乱用列表:
list1 = [[4,8],[8,16]]
list2 = [2]
import numpy as np
arr1 = np.array(list1)
arr2 = np.array(list2)
然后简单地:
result = arr1.sum(axis=1) / arr2