
现在我有一列不等长数组:
a = [[1,0,1,0], [1,0,1], [1,0,1,1,1], ... ] 我该怎样才能对这个数组求和呢?得到这样的序列[2,2,4...]?
求各位大佬赐教!感激不尽
1 imn1 2017 年 5 月 22 日 [sum(x) for x in a] |
2 guolingbing OP @imn1 这样太慢了 |
3 guolingbing OP 谢谢各位,我已经找到方法了 233: 把数组 flat 以后,用 np.add.reduceat()方法 |
4 imn1 2017 年 5 月 22 日 df.sum(axis=1) |
5 zhusimaji 2017 年 5 月 22 日 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 |
6 amoia50 2017 年 5 月 23 日 np.sum(a, axis=1) |
7 guolingbing OP @zhusimaji 这个 work ,但是速度比较慢,还要解决 na 值 |
8 guolingbing OP @amoia50 这个根本不会 work |
9 ruoyu0088 2017 年 5 月 24 日 如果你的数据是一个嵌套列表,那么 list(map(sum, data))最快,如果你的数据是数组列表,那么[row.sum() for row in data]最快。至于是嵌套列表好还是数组列表好,要看每条数据的平均长度,数据越长,使用 numpy 数组越快。我猜你的数据是数组列表,你可以比较一下[row.sum() for row in data]和你的 flat 数组的方法,应该是我这个更快。因为将所有这些数组拼在一起就很浪费时间。 https://gist.github.com/ruoyu0088/83eeb57dfe5cb8fe62db91d88fe34598 |