Pandas拥有广泛使用的groupby功能,可以根据相应的映射将DataFrame分割成子组,您可以在每个子组上应用计算并重新合并结果。
在NumPy中是否可以灵活地完成此操作而不需要本机Python for循环? 通过Python循环实现该操作将如下所示:
在NumPy中是否可以灵活地完成此操作而不需要本机Python for循环? 通过Python循环实现该操作将如下所示:
>>> import numpy as np
>>> X = np.arange(10).reshape(5, 2)
>>> groups = np.array([0, 0, 0, 1, 1])
# Split up elements (rows) of `X` based on their element wise group
>>> np.array([X[groups==i].sum() for i in np.unique(groups)])
array([15, 30])
15以上是X
的前三行的总和,30是剩余两行的总和。
通过“灵活地”,我只是指我们不专注于一种特定的计算,例如求和、计数、最大值等,而是将任何计算传递给分组数组。
如果没有,请问是否有比上述方法更快的方法?
key
参数需要是可调用的(不是一组组)。你不能使用像groups.__getitem__
这样的东西,因为它需要是一个应用于第一个参数的每个元素的函数。 - Brad Solomonsearchsorted
解决方案,以向量化的方式检索多个值的索引。 - hpaulj