我想知道是否有一种更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(使用前将#替换为@)