如何在特定范围内将标量添加到numpy数组中?

14

在NumPy中是否有一种更简单和更内存高效的方法来执行以下操作。

import numpy as np
ar = np.array(a[l:r])
ar += c
a = a[0:l] + ar.tolist() + a[r:]

这看起来可能有些原始,但它涉及到获取给定数组的子数组副本,然后准备两个相同的副本,以左右方向附加标量添加。我希望能找到更多优化的方法。我想要一个完全在Python列表或NumPy数组中的解决方案,而不是两者兼用,因为在数据很大时,从一种形式转换为另一种形式会造成严重的开销。


6
你希望将 c 添加到 a 数组的一个切片中,就地执行操作... 那么对于你的示例,a[l:r] += c 是否可行(假设 a 是 NumPy 数组)? - Alex Riley
是的,那就是这个想法。 - Ébe Isaac
1个回答

29

您可以按照以下方式在原地完成任务:

import numpy as np

a = np.array([1, 1, 1, 1, 1])
a[2:4] += 5
>>> a
array([1, 1, 6, 6, 1])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接