Python中numpy和pandas常见问题求解答

现在我有一列不等长数组:


a = [[1,0,1,0], [1,0,1], [1,0,1,1,1], … ]

我该怎样才能对这个数组求和呢?得到这样的序列[2,2,4...]?

求各位大佬赐教!感激不尽


Python中numpy和pandas常见问题求解答
10 回复

[sum(x) for x in a]


我无法理解你的问题

这样太慢了

谢谢各位,我已经找到方法了 233:
把数组 flat 以后,用 np.add.reduceat()方法

df.sum(axis=1)

import pandas as pd

In [3]:

b
a = [[1,0,1,0],
[1,0,1],
[1,0,1,1,1]
]
b=pd.DataFrame(a)
print b.sum(axis=1)
0 2.0
1 2.0
2 4.0
dtype: float64

np.sum(a, axis=1)

这个 work ,但是速度比较慢,还要解决 na 值

这个根本不会 work

如果你的数据是一个嵌套列表,那么 list(map(sum, data))最快,如果你的数据是数组列表,那么[row.sum() for row in data]最快。至于是嵌套列表好还是数组列表好,要看每条数据的平均长度,数据越长,使用 numpy 数组越快。我猜你的数据是数组列表,你可以比较一下[row.sum() for row in data]和你的 flat 数组的方法,应该是我这个更快。因为将所有这些数组拼在一起就很浪费时间。

https://gist.github.com/ruoyu0088/83eeb57dfe5cb8fe62db91d88fe34598

回到顶部