我正在使用python,我有一个列表列表(或者也可以是一个numpy数组),如下所示:
list = [[0, 0, -1], [1, 1, -2], [1, 2, -3], [2, 2, -4]]我有一个函数,它获取每个子列表的前两个元素,并给出结果。假设我使用的函数是sum(),所以我想要做的是
list1 = [[sum(0, 0), -1], [sum(1, 1), -2], [sum(1, 2), -3], [sum(2, 2), -4]]输出结果是
list1 = [[0, -1], [2, -2], [3, -3], [4, -4]]有没有办法用map或numpy.vectorize来解决这个问题?我已经可以把它当作循环来做了,但是对于我的真实数据来说,这太昂贵了。
有什么建议吗?
发布于 2016-01-26 21:49:41
在使用numpy数组的情况下,您应该使用矢量化获得最快的结果:
In [128]: arr = np.asarray(list)
#Out[128]:
#array([[ 0, 0, -1],
# [ 1, 1, -2],
# [ 1, 2, -3],
# [ 2, 2, -4]])
In [129]: np.vstack((arr[:,0]+arr[:,1], arr[:,2])).T
#Out[129]:
#array([[ 0, -1],
# [ 2, -2],
# [ 3, -3],
# [ 4, -4]])https://stackoverflow.com/questions/35015021
复制相似问题