如何最有效地替换Python中数组的每个第n个值?

2023-12-13

我想知道是否有一种更Pythonic(且更有效)的方法来执行以下操作:

MAX_SIZE = 100
nbr_elements = 10000
y = np.random.randint(1, MAX_SIZE, nbr_elements)


REPLACE_EVERY_Nth = 100
REPLACE_WITH = 120
c = 0

for index, item in enumerate(y):
    c += 1
    if (c % REPLACE_EVERY_Nth == 0):
        y[index] = REPLACE_WITH

所以基本上我生成了一堆从 1 到MAX_SIZE-1,然后我想替换每个REPLACE_EVERY_Nth元素与REPLACE_WITH。这工作正常,但我想它可以在不使用的情况下以某种方式完成enumerate?

我在想这样的事情(我知道这是错误的,因为我用 y 的索引替换了原来的 y):

y = map(lambda x: REPLACE_WITH if not x%REPLACE_EVERY_Nth else x, range(len(y)))

有没有办法对索引进行取模但替换值?


使用切片REPLACE_EVERY_Nth作为步长值:

y[::REPLACE_EVERY_Nth] = REPLACE_WITH

这与您的代码略有不同,因为它将从第一项(即索引 0)开始。要准确了解代码的用途,请使用

y[REPLACE_EVERY_Nth - 1::REPLACE_EVERY_Nth] = REPLACE_WITH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何最有效地替换Python中数组的每个第n个值? 的相关文章

随机推荐