【发布时间】:2017-12-16 20:21:09
【问题描述】:
背景
我有一个用零初始化的一维 NumPy 数组。
import numpy as np
section = np.zeros(1000)
然后我有一个 Pandas DataFrame,其中我在两列中有索引:
d= {'start': {0: 7200, 1: 7500, 2: 7560, 3: 8100, 4: 11400},
'end': {0: 10800, 1: 8100, 2: 8100, 3: 8150, 4: 12000}}
df = pd.DataFrame(data=d, columns=['start', 'end'])
对于每对索引,我想将 numpy 数组中相应索引的值设置为 True。
我目前的解决方案
我可以通过对 DataFrame 应用一个函数来做到这一点:
def fill_array(row):
section[row.start:row.end] = True
df.apply(fill_array, axis=1)
我想对这个操作进行矢量化
这按我的预期工作,但为了好玩,我想对操作进行矢量化。我对此不是很精通,而且我在网上搜索并没有让我走上正轨。
如果可能的话,我非常感谢有关如何将其转换为向量运算的任何建议。
【问题讨论】:
-
在您的实际用例中会有多少个开始、结束对?
-
@Divakar 最坏情况 10 000 对,以及 1-3 百万个索引的 NumPy 数组。
标签: python arrays pandas numpy vectorization