假设我有两个一维numpy数组A和B,假设它们是由
A = np.array([random.randint(1,100) for _ in range(1000)])
和B的关系。假设这些值是在一段时间内按天数索引的某些价格。
假设我想计算A的部分滚动和,窗口= 20,如下所示:对于每一天,考虑过去20天内B的值,选择B值较大的10天,然后将相应10天内A的值相加。
对于循环,它可能看起来像这样:
result = np.zeros(A.shape)
for i in range(19, len(A)):
window = list(zip(B[i - 19: i + 1], A[i - 19: i + 1]))
window.sort(key = lambda x: x[0])
result[i] = sum(window[1][10:])
这会运行得非常慢,因为numpy数组上的循环很慢。我想知道什么是'numpy'这样做的方式,即。而不用在整个数组上循环。
1条答案
按热度按时间deikduxw1#
因为还没有人发布任何答案,我有点想出了一个方法来做,我将在这里发布。欢迎任何评论/建议/更好的答案。