如何在Python中求和两个数组

如何在Python中求和两个数组

我做了一个这样的数据框:

import numpy as np
import pandas as pd

occurrence = np.array([4, 5, 4, 0, 1, 4, 3])
year = np.array([1851,1852,1853,1854,1855,1856,1857])
disaster = {"occur":pd.Series(occur),"year":pd.Series(year)}
df =  pd.DataFrame(disaster)

现在我想做一个函数,这样当我给两年的时候,它会给我这两年发生的总和。如果我输入18511852,它将显示事件是9
我写了一个这样的函数,但它显示错误:
def dist(s1,s2):
    return (sum (year>=s1 and year< s2))

print dist(s1,s2)

最佳答案

如果你特别想要一个numpy方法,你可以做类似的事情:

import numpy as np

occurrence= np.array([4, 5, 4, 0, 1, 4, 3])
year = np.array([1851,1852,1853,1854,1855,1856,1857])

year1, year2 = 1851, 1852
mask = (year == year1) | (year == year2)
print occurrence[mask].sum()

注意,如果你想要这两年之间发生的所有事件的总和,你会做一些更像的事情:
mask = (year >= year1) & (year <= year2)

对于pandas,同样的方法仍然有效,但正如其他人所指出的,如果您只对这两年(而不是它们之间的间隔)感兴趣,则可以使用isin方法构建布尔掩码。

关于python - 如何在Python中求和两个数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28305302/

10-11 22:07